{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据获取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"./data/otto/train.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>feat_1</th>\n",
       "      <th>feat_2</th>\n",
       "      <th>feat_3</th>\n",
       "      <th>feat_4</th>\n",
       "      <th>feat_5</th>\n",
       "      <th>feat_6</th>\n",
       "      <th>feat_7</th>\n",
       "      <th>feat_8</th>\n",
       "      <th>feat_9</th>\n",
       "      <th>...</th>\n",
       "      <th>feat_85</th>\n",
       "      <th>feat_86</th>\n",
       "      <th>feat_87</th>\n",
       "      <th>feat_88</th>\n",
       "      <th>feat_89</th>\n",
       "      <th>feat_90</th>\n",
       "      <th>feat_91</th>\n",
       "      <th>feat_92</th>\n",
       "      <th>feat_93</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 95 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id  feat_1  feat_2  feat_3  feat_4  feat_5  feat_6  feat_7  feat_8  feat_9  \\\n",
       "0   1       1       0       0       0       0       0       0       0       0   \n",
       "1   2       0       0       0       0       0       0       0       1       0   \n",
       "2   3       0       0       0       0       0       0       0       1       0   \n",
       "3   4       1       0       0       1       6       1       5       0       0   \n",
       "4   5       0       0       0       0       0       0       0       0       0   \n",
       "\n",
       "   ...  feat_85  feat_86  feat_87  feat_88  feat_89  feat_90  feat_91  \\\n",
       "0  ...        1        0        0        0        0        0        0   \n",
       "1  ...        0        0        0        0        0        0        0   \n",
       "2  ...        0        0        0        0        0        0        0   \n",
       "3  ...        0        1        2        0        0        0        0   \n",
       "4  ...        1        0        0        0        0        1        0   \n",
       "\n",
       "   feat_92  feat_93   target  \n",
       "0        0        0  Class_1  \n",
       "1        0        0  Class_1  \n",
       "2        0        0  Class_1  \n",
       "3        0        0  Class_1  \n",
       "4        0        0  Class_1  \n",
       "\n",
       "[5 rows x 95 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(61878, 95)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>feat_1</th>\n",
       "      <th>feat_2</th>\n",
       "      <th>feat_3</th>\n",
       "      <th>feat_4</th>\n",
       "      <th>feat_5</th>\n",
       "      <th>feat_6</th>\n",
       "      <th>feat_7</th>\n",
       "      <th>feat_8</th>\n",
       "      <th>feat_9</th>\n",
       "      <th>...</th>\n",
       "      <th>feat_84</th>\n",
       "      <th>feat_85</th>\n",
       "      <th>feat_86</th>\n",
       "      <th>feat_87</th>\n",
       "      <th>feat_88</th>\n",
       "      <th>feat_89</th>\n",
       "      <th>feat_90</th>\n",
       "      <th>feat_91</th>\n",
       "      <th>feat_92</th>\n",
       "      <th>feat_93</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.00000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61878.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>30939.500000</td>\n",
       "      <td>0.38668</td>\n",
       "      <td>0.263066</td>\n",
       "      <td>0.901467</td>\n",
       "      <td>0.779081</td>\n",
       "      <td>0.071043</td>\n",
       "      <td>0.025696</td>\n",
       "      <td>0.193704</td>\n",
       "      <td>0.662433</td>\n",
       "      <td>1.011296</td>\n",
       "      <td>...</td>\n",
       "      <td>0.070752</td>\n",
       "      <td>0.532306</td>\n",
       "      <td>1.128576</td>\n",
       "      <td>0.393549</td>\n",
       "      <td>0.874915</td>\n",
       "      <td>0.457772</td>\n",
       "      <td>0.812421</td>\n",
       "      <td>0.264941</td>\n",
       "      <td>0.380119</td>\n",
       "      <td>0.126135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>17862.784315</td>\n",
       "      <td>1.52533</td>\n",
       "      <td>1.252073</td>\n",
       "      <td>2.934818</td>\n",
       "      <td>2.788005</td>\n",
       "      <td>0.438902</td>\n",
       "      <td>0.215333</td>\n",
       "      <td>1.030102</td>\n",
       "      <td>2.255770</td>\n",
       "      <td>3.474822</td>\n",
       "      <td>...</td>\n",
       "      <td>1.151460</td>\n",
       "      <td>1.900438</td>\n",
       "      <td>2.681554</td>\n",
       "      <td>1.575455</td>\n",
       "      <td>2.115466</td>\n",
       "      <td>1.527385</td>\n",
       "      <td>4.597804</td>\n",
       "      <td>2.045646</td>\n",
       "      <td>0.982385</td>\n",
       "      <td>1.201720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>15470.250000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>30939.500000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>46408.750000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>61878.000000</td>\n",
       "      <td>61.00000</td>\n",
       "      <td>51.000000</td>\n",
       "      <td>64.000000</td>\n",
       "      <td>70.000000</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>76.000000</td>\n",
       "      <td>43.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>76.000000</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>65.000000</td>\n",
       "      <td>67.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>61.000000</td>\n",
       "      <td>130.000000</td>\n",
       "      <td>52.000000</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>87.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 94 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 id       feat_1        feat_2        feat_3        feat_4  \\\n",
       "count  61878.000000  61878.00000  61878.000000  61878.000000  61878.000000   \n",
       "mean   30939.500000      0.38668      0.263066      0.901467      0.779081   \n",
       "std    17862.784315      1.52533      1.252073      2.934818      2.788005   \n",
       "min        1.000000      0.00000      0.000000      0.000000      0.000000   \n",
       "25%    15470.250000      0.00000      0.000000      0.000000      0.000000   \n",
       "50%    30939.500000      0.00000      0.000000      0.000000      0.000000   \n",
       "75%    46408.750000      0.00000      0.000000      0.000000      0.000000   \n",
       "max    61878.000000     61.00000     51.000000     64.000000     70.000000   \n",
       "\n",
       "             feat_5        feat_6        feat_7        feat_8        feat_9  \\\n",
       "count  61878.000000  61878.000000  61878.000000  61878.000000  61878.000000   \n",
       "mean       0.071043      0.025696      0.193704      0.662433      1.011296   \n",
       "std        0.438902      0.215333      1.030102      2.255770      3.474822   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      1.000000      0.000000   \n",
       "max       19.000000     10.000000     38.000000     76.000000     43.000000   \n",
       "\n",
       "       ...       feat_84       feat_85       feat_86       feat_87  \\\n",
       "count  ...  61878.000000  61878.000000  61878.000000  61878.000000   \n",
       "mean   ...      0.070752      0.532306      1.128576      0.393549   \n",
       "std    ...      1.151460      1.900438      2.681554      1.575455   \n",
       "min    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "25%    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "50%    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "75%    ...      0.000000      0.000000      1.000000      0.000000   \n",
       "max    ...     76.000000     55.000000     65.000000     67.000000   \n",
       "\n",
       "            feat_88       feat_89       feat_90       feat_91       feat_92  \\\n",
       "count  61878.000000  61878.000000  61878.000000  61878.000000  61878.000000   \n",
       "mean       0.874915      0.457772      0.812421      0.264941      0.380119   \n",
       "std        2.115466      1.527385      4.597804      2.045646      0.982385   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        1.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max       30.000000     61.000000    130.000000     52.000000     19.000000   \n",
       "\n",
       "            feat_93  \n",
       "count  61878.000000  \n",
       "mean       0.126135  \n",
       "std        1.201720  \n",
       "min        0.000000  \n",
       "25%        0.000000  \n",
       "50%        0.000000  \n",
       "75%        0.000000  \n",
       "max       87.000000  \n",
       "\n",
       "[8 rows x 94 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEHCAYAAAC9TnFRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAE4pJREFUeJzt3X+wZ3V93/HnC0FBwcuPvf4Idl0pWWOprtNcLBEWsqtsCkIaGuNQgkhpumKrBqYljUN/+KO2kIytoKm6k/oLtRmbjCmwBbIuy6IGxN1xWDImKBowTFK8t8TdqLBm5N0/vmfH3etd+Hx37/d7vux9Pmbu3HPe59zv5/397r37uuecez7fVBWSJD2Vw/puQJL09GBgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqcnjfDSymZcuW1YoVK/puQ5KeVrZv3z5XVdNPtd8hFRgrVqxg27ZtfbchSU8rSR5q2c9TUpKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWoyksBIckSSm/Za/40kX0hyS5JnJlnWrd+X5Jpun6aaJKkfix4YSY4CtgNnd+snAadU1WrgFuBFwBXARmAVcE6SlUPUJEk9WPQ7vavqMeAVSR7oSq8BjktyJ/AI8AFgLfC2qnoiyVZgzRC1ry92z+P07Xe/vJdxl/+H+3oZV9KhYxzXMKaB2ao6k8HRxRnACcDObvsu4PghavtIsj7JtiTbZmdnR/YkJGmpG0dg7ALu75a/BZwIzAFTXW2qW2+t7aOqNlTVTFXNTE8/5dxZkqQDNI7A2A6c2i2fzCA0NgPrkhwGnAVsGaImSerByAOjqu4C5pJ8Bbi/qu4BrgfOBXYAG6vqgSFqkqQejGx686o6ea/lt8zbNgesPpCaJKkf3rgnSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpqMJDCSHJHkpnm1K5N8vlteluQLSe5Lcs0wNUlSPxb9Pb2THAV8GVi5V+3FwKXAbFe6AtgI/Bbw1SQfBS5pqVXV1xe7Z+np7L0Xv76Xca/+1O/3Mq76s+hHGFX1WFW9Anh4r/J1wDv2Wl8LbKqqJ4CtwJohapKkHoz8GkaSi4B7ga/tVT4B2Nkt7wKOH6I2//HXJ9mWZNvs7Oz8zZKkRTKOi97nAa8Bfg/42SRvBeaAqW77VLfeWttHVW2oqpmqmpmenh7Zk5CkpW7kgVFVF1XVGcCFwPaq+iCwGViX5DDgLGDLEDVJUg/6+rPa64FzgR3Axqp6YIiaJKkHi/5XUntU1cnz1h8EXtstzwGr521vqkmS+uGNe5KkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpyUgCI8kRSW7qlpPkE0nuTnJjksOTHJnk5iT3Jrmh26epNop+JUlPbdEDI8lRwHbg7K50OnB4VZ0GPBdYB1wMPFxVq4Djun1ba5KkHix6YFTVY1X1CuDhrvQIcF23/MPu81pgU7d8O7BmiJokqQcjv4ZRVd+oqnuSXAA8E7gNOAHY2e2yCzh+iNo+kqxPsi3JttnZ2dE9EUla4sZy0TvJLwK/DpxfVT8C5oCpbvNUt95a20dVbaiqmaqamZ6eHt2TkKQlbuSBkeQFwFXA66rqb7ryZgbXMmBw2mnLEDVJUg/GcYTxJuCFwG1JvpjkMuDTwIlJdgCPMgiG1pokqQeHj+qBq+rk7vO1wLUL7HLevPXdjTVJUg+8cU+S1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktRkJIGR5IgkN3XLRya5Ocm9SW7IwAHXRtGvJOmpLXpgJDkK2A6c3ZUuBh6uqlXAcV39YGqSpB4semBU1WNV9Qrg4a60FtjULd8OrDnImiSpB+O4hnECsLNb3gUcf5C1fSRZn2Rbkm2zs7MjeQKSpPEExhww1S1PdesHU9tHVW2oqpmqmpmenh7JE5AkjScwNgPruuW1wJaDrEmSejCOwPg0cGKSHcCjDELgYGqSpB4cPqoHrqqTu8+7gfPmbT6YmiSpB964J0lqYmBIkpoYGJKkJgaGJKmJgSFJatIUGElOmbf+9tG0I0maVK1HGB+at/76xW5EkjTZnvQ+jCT/GPgl4KeTfLQrHw18c9SNSZImy1PduHcHcC9wCvCurvZYVX1nlE1JkibPkwZGVe0EdiZ5X1U9NKaeJEkTqHVqkEeSfAQ4Yk+hqi4bTUuSpEnUGhgfAt4EPDLCXiRJE6w1MP4C+FpVfW+UzUiSJldrYDwEfDXJ54DvAVTVu0fWlSRp4rQGxqe6jz1qBL1IkiZYa2D8PD8ZEncubiuSNDrvfOc7l9S4o9AaGHd0n48CzsE5qCRpyWkKjKrautfqrUk+MKJ+JEkTqikwklyy1+oxwMuHGSTJc4DPAMuALwG/BXwOOBbYWFW/mWRZS22YcSVJi6f11FK6D4D/B7xhyHF+Fbi7qk5nMM3IR4CNwCrgnCQrgSsaa5KkHrQGxmeAZwH/gMHkg48OOc5u4NlJAhwJvBrYVFVPAFuBNcDaxpokqQetF70/BnwDuAU4Dfg4cPEQ43wGuAv4FWAz8CJgZ7dtF3A8cEJjbR9J1gPrAZYvXz5ES9rj9A+c3su4X3rbl3oZV9KBaT3CWFFV76qq26rqXcCKIcd5B/DhqvoZBv/prwSmum1TwFz30VLbR1VtqKqZqpqZnp4esi1JUqvWwPh2kquTrE1yNfDtIcc5Bni8W97N4GhjXZLDgLOALQyOPFpqkqQetAbG5cAzGLzT3i7gzUOO8zvAW5LcxeBejguAc4EdDP766QHg+saaJKkHrdcwPgncCLwHuJrBNY3mt2mtqgeB+SfKV8/bZ66lJknqR+sRxvOq6qM18J+A54+yKUnS5GmerTbJvwXuAf4h8Jeja0mSNIlajzAuBX7A4DTU94FLnnRvSdIhp3Uuqd2A80dJ0hLmrLOSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpydgCI8lvJPlCkluSPK9bvi/JNd32ZS01SVI/xhIYSU4CTqmq1cAtwPuBjcAq4JwkK4ErGmuSpB6M6wjjNcBxSe4EVgMvATZV1RPAVmANsLaxJknqwbgCYxqYraozgRcBrwJ2dtt2AccDJzTW9pFkfZJtSbbNzs6O7hlI0hI3rsDYBdzfLX8LeBCY6tangLnuo6W2j6raUFUzVTUzPT09kuYlSeMLjO3Aqd3yyQzCY12Sw4CzgC3A5saaJKkHYwmMqroLmEvyFQZhcQlwLrAD2FhVDwDXN9YkST04fFwDVdVb5pVWz9s+11KTJPXDG/ckSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUZ2417kqSf9Nn/9aqxj/mGX7nngL7OIwxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU3GGhhJrkzy+STLknwhyX1Jrum2NdUkSf0YW2AkeTFwabd6BbARWAWck2TlEDVJUg/GeYRxHfCObnktsKmqngC2AmuGqEmSejCWwEhyEXAv8LWudAKws1veBRw/RE2S1INxTT54HrAc+AXgpcATwFS3bQp4CJhrrO0jyXpgPcDy5ctH070kaTxHGFV1UVWdAVwIbAd+B1iX5DDgLGALsLmxNv+xN1TVTFXNTE9Pj+PpSNKS1Nef1V4PnAvsADZW1QND1CRJPRjr+2FU1YPAa7vV1fO2zbXUJEn98MY9SVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUZKxTg0haGv70vbf3Mu7Lrl7by7hLhUcYkqQmHmFoYm0986yxj3nWnVufdPsH//VNY+rkx976vvPHPqa0EI8wJElNDAxJUhMDQ5LUxMCQJDUxMCRJTcYSGBn4RJK7k9yY5OgkNye5N8kN3fYjW2rj6FeS9JPGdYRxOnB4VZ0GPBe4DHi4qlYBxwFnAxc31iRJPRhXYDwCXNct/xB4J7CpW78dWAOsbaxJknowlsCoqm9U1T1JLgCeCWwHdnabdwHHAyc01vaRZH2SbUm2zc7OjvBZSNLSNrY7vZP8IvDrwPnAh4GpbtMUMAcc3VjbR1VtADYAzMzM1N7bfvaqTy7qc2i1/bcv6WVcSRqlcV30fgFwFfC6qvobYDOwrtu8FtgyRE2S1INxXcN4E/BC4LYkXwSOAE5MsgN4lEEwfLqxJknqwVhOSVXVtcC188ofmbe+GzivoSZJ6oE37kmSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJhMdGEmOTHJzknuT3JAkffckSUvVRAcGcDHwcFWtAo4Dzu65H0lasiY9MNYCm7rl24E1PfYiSUtaqqrvHvYryW3Ab1fV55P8GnBqVb153j7rgfXd6kuB+xdp+GXA3CI91mKxpzaT2BNMZl/21OZQ7+nFVTX9VDsdvkiDjcocMNUtT7HAi1NVG4ANiz1wkm1VNbPYj3sw7KnNJPYEk9mXPbWxp4FJPyW1GVjXLa8FtvTYiyQtaZMeGJ8GTkyyA3iUQYBIknow0aekqmo3cF5Pwy/6aa5FYE9tJrEnmMy+7KmNPTHhF70lSZNj0k9JSZImhIEhSWpyyAZGkvck+XKSG5Mc09XuGPGYz0ny+5PSU5KjktyU5CtJFjzf2UNPxya5NcndSd4zCT3tNe51SX73SbaP+7W6PMkDSb7YfUwtsE8f3+fvS3JXko/vZ/u4X6cL93qNvpPkrAno6YVJNnXf52/fzz7j7uklXT93JbnsQB7jkAyMJK8GVgOnAbfy4xv7RjnmS4B7gFdOSk/ALwM7qupU4Owkf28Cevo14FNVdRrwy0mOm4CeSPIq4Jwn2d5LX8B/rKozuo+dffeUZA3w/ar6OeDBJMf23VNV/d6e1wj4K2BH3z0BbwM+2n2f//MkR09AT/8S+APgdOBfJXn2sA9wSAYG8AvA/6nBFf1bga/P36E7GtiY5M4kH+tq00m2dCn83/dXW0hV/XlVnTJJPQF/CtzQLf9wQnr6XeCz3TfrM4DdffeU5AjgWuDfPUnffbxWAG9N8tUk101IT68FXprky8CxVfXdCehpz+OeBHy3qv56AnraDTy7+94CmP/XRX29Tscw+H//SAYzYwzlUA2M5zO4b4Oq+lZV3bTAPicCH2FwY+BJSZ4PnAn8SfdbwR1JDttP7WnRU1Vtr6o/S3IFsL2qvjYBPX0X+BHwAHBrVf2g756Aq4BPAt/Zz/a++toO/BtgBrggyYoJ6Gka+BPg1cA/SbJ8Anra43xg4wL1Pnp6P/AO4M8YHFF/fwJ6+iCDf7ePAX8NHLWf/fbrUA2MXcDRMDjVkOSqBfZ5HHgjg9/Aj2Xw4t3Sfc3NwMuq6on91J42PSV5C4ND3zdNQk/dNz3AScC53W+FvfYE/CMGr8/7gdclef0C+/TR17eBu6vqR8DDwPMmoKddwP1dT38B/NQE9LTH+cDN++l53D39N+ByYCVw3gLB2kdPPwBeX1VvBJ7Fk/+CtKBDNTC+xOCQDwYz3D62wD7/AvhD4CJgT/qfDvzPqjoPWJfk7+6n9rToKckq4HXAG6rqbyehJwY/SD/H4JD9bxkcGvfaU1WdWVU/D1wBbKyqhf5woY/X6r8CZyQ5ClgOfGMCetoOnJrkGV1PD01ATyR5LvCiBY6i++rpGODxLliLCfg+B/4p8O+TTDMIq2/uZ7/9mug7vQ/CjcBrk9wDPAJcuMA+m4APA29m8A/6Uwx+ID+V5FkMfqN7iMHpk/m1p0tPlwMrgK0ZvPfUe6vqlp57+i/d4z2LwX/O83/AJ/Hfrq++/jODaz7PBN69wLn5Pnr6A+AC4CvADVX1VxPQEwyOEv9oP9v66Oka4EPdz90fV9X8axR99HRDN+7NwNvrAO7a9k5vSVKTQ/UIY2SSvACYf8rioar61T76AXtqNYk9wWT2ZU9tllpPHmFIkpocqhe9JUmLzMCQJDUxMKQhJXllkgWngFmkx790VI8tHQwDQxreK9nPnGGL5NIRPrZ0wLzoLQ0hybUM7kMA+EsGN0Z+lsGNWt+sqn/WTeHxXgY3Yx1WVZcleRnwCeAJBtNFfI7BXF8bGNxEdT3wvxlMbfFy4D7gpqq6djzPTHpqBoY0pD2njKrq40lWAj/D4Kax24A3MJjCYQewrqru7r7mSgZTMTwIXFhVb0vyhwymI/lj4KvA36+qSnJHd+e5NFG8D0M6OHvm+3kjP57vB+CP9oRF55sMJqN7HLiyq60E3sXgLt5ndF8//25uaWIYGNLwHgOWdct75vv5LLB1r32+N+9rfgk4d970Hl8HrqyqP89gRuE9U9A/luQ5wA8OZPoGaVS86C0NbxODN3+6C/g8cDWwmR/P97OQ7cCXM3jfgg0ZvMPabwL/I8k24O/sNQX2BuB29j83ktQLr2FIY5DBW+T+NINZeh8HLq+q/9tvV9JwDAxJUhNPSUmSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJv8fdz/n3cO/KJIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 图形可视化,查看数据分布\n",
    "import seaborn as sns\n",
    "\n",
    "sns.countplot(data.target)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由上图可以看出,该数据类别不均衡,所以需要后期处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据基本处理\n",
    "\n",
    "数据已经经过脱敏,不再需要特殊处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 截取部分数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 95)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new1_data = data[:10000]\n",
    "new1_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 图形可视化,查看数据分布\n",
    "import seaborn as sns\n",
    "\n",
    "sns.countplot(new1_data.target)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用上面方式获取数据不可行,然后使用随机欠采样获取响应的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 随机欠采样获取数据\n",
    "# 首先需要确定特征值\\标签值\n",
    "\n",
    "y = data[\"target\"]\n",
    "x = data.drop([\"id\", \"target\"], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feat_1</th>\n",
       "      <th>feat_2</th>\n",
       "      <th>feat_3</th>\n",
       "      <th>feat_4</th>\n",
       "      <th>feat_5</th>\n",
       "      <th>feat_6</th>\n",
       "      <th>feat_7</th>\n",
       "      <th>feat_8</th>\n",
       "      <th>feat_9</th>\n",
       "      <th>feat_10</th>\n",
       "      <th>...</th>\n",
       "      <th>feat_84</th>\n",
       "      <th>feat_85</th>\n",
       "      <th>feat_86</th>\n",
       "      <th>feat_87</th>\n",
       "      <th>feat_88</th>\n",
       "      <th>feat_89</th>\n",
       "      <th>feat_90</th>\n",
       "      <th>feat_91</th>\n",
       "      <th>feat_92</th>\n",
       "      <th>feat_93</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>22</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 93 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   feat_1  feat_2  feat_3  feat_4  feat_5  feat_6  feat_7  feat_8  feat_9  \\\n",
       "0       1       0       0       0       0       0       0       0       0   \n",
       "1       0       0       0       0       0       0       0       1       0   \n",
       "2       0       0       0       0       0       0       0       1       0   \n",
       "3       1       0       0       1       6       1       5       0       0   \n",
       "4       0       0       0       0       0       0       0       0       0   \n",
       "\n",
       "   feat_10  ...  feat_84  feat_85  feat_86  feat_87  feat_88  feat_89  \\\n",
       "0        0  ...        0        1        0        0        0        0   \n",
       "1        0  ...        0        0        0        0        0        0   \n",
       "2        0  ...        0        0        0        0        0        0   \n",
       "3        1  ...       22        0        1        2        0        0   \n",
       "4        0  ...        0        1        0        0        0        0   \n",
       "\n",
       "   feat_90  feat_91  feat_92  feat_93  \n",
       "0        0        0        0        0  \n",
       "1        0        0        0        0  \n",
       "2        0        0        0        0  \n",
       "3        0        0        0        0  \n",
       "4        1        0        0        0  \n",
       "\n",
       "[5 rows x 93 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    Class_1\n",
       "1    Class_1\n",
       "2    Class_1\n",
       "3    Class_1\n",
       "4    Class_1\n",
       "Name: target, dtype: object"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 欠采样获取数据\n",
    "from imblearn.under_sampling import RandomUnderSampler\n",
    "\n",
    "rus = RandomUnderSampler(random_state=0)\n",
    "\n",
    "X_resampled, y_resampled = rus.fit_resample(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((61878, 93), (61878,))"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape, y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((17361, 93), (17361,))"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_resampled.shape, y_resampled.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 图形可视化,查看数据分布\n",
    "import seaborn as sns\n",
    "\n",
    "sns.countplot(y_resampled)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 把标签值转换为数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    Class_1\n",
       "1    Class_1\n",
       "2    Class_1\n",
       "3    Class_1\n",
       "4    Class_1\n",
       "Name: target, dtype: object"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_resampled.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "le = LabelEncoder()\n",
    "y_resampled = le.fit_transform(y_resampled)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, ..., 8, 8, 8])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_resampled"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分割数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(X_resampled, y_resampled, test_size=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((13888, 93), (13888,))"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape, y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((3473, 93), (3473,))"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test.shape, y_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 模型训练\n",
    "\n",
    "## 基本模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n",
       "                       criterion='gini', max_depth=None, max_features='auto',\n",
       "                       max_leaf_nodes=None, max_samples=None,\n",
       "                       min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "                       min_samples_leaf=1, min_samples_split=2,\n",
       "                       min_weight_fraction_leaf=0.0, n_estimators=100,\n",
       "                       n_jobs=None, oob_score=True, random_state=None,\n",
       "                       verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "\n",
    "rf = RandomForestClassifier(oob_score=True)\n",
    "rf.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 7, 4, ..., 2, 8, 7])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pre = rf.predict(x_test)\n",
    "y_pre"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7759861790958825"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf.score(x_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7596486175115207"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf.oob_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 图形可视化,查看数据分布\n",
    "import seaborn as sns\n",
    "\n",
    "sns.countplot(y_pre)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "y_true and y_pred contain different number of classes 9, 2. Please provide the true labels explicitly through the labels argument. Classes found in y_true: [0 1 2 3 4 5 6 7 8]",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-27-d46cdf2b65ce>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mlog_loss\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mlog_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_pre\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1e-15\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnormalize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m~/.virtualenvs/testai/lib/python3.7/site-packages/sklearn/metrics/_classification.py\u001b[0m in \u001b[0;36mlog_loss\u001b[0;34m(y_true, y_pred, eps, normalize, sample_weight, labels)\u001b[0m\n\u001b[1;32m   2285\u001b[0m                              \"y_true: {2}\".format(transformed_labels.shape[1],\n\u001b[1;32m   2286\u001b[0m                                                   \u001b[0my_pred\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2287\u001b[0;31m                                                   lb.classes_))\n\u001b[0m\u001b[1;32m   2288\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2289\u001b[0m             raise ValueError('The number of classes in labels is different '\n",
      "\u001b[0;31mValueError\u001b[0m: y_true and y_pred contain different number of classes 9, 2. Please provide the true labels explicitly through the labels argument. Classes found in y_true: [0 1 2 3 4 5 6 7 8]"
     ]
    }
   ],
   "source": [
    "# logloss模型评估\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "log_loss(y_test, y_pre, eps=1e-15, normalize=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([1, 7, 4, ..., 2, 8, 7]), array([1, 7, 4, ..., 2, 8, 7]))"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test, y_pre"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上面报错原因:logloss使用过程中,必须要求将输出用one-hot表示,\n",
    "    \n",
    "需要将这个多类别问题的输出结果通过OneHotEncoder修改为如下:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1],\n",
       "       [7],\n",
       "       [4],\n",
       "       ...,\n",
       "       [2],\n",
       "       [8],\n",
       "       [7]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.reshape(-1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1],\n",
       "       [7],\n",
       "       [4],\n",
       "       ...,\n",
       "       [2],\n",
       "       [8],\n",
       "       [7]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pre.reshape(-1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder\n",
    "\n",
    "one_hot = OneHotEncoder(sparse=False)\n",
    "\n",
    "y_test1 = one_hot.fit_transform(y_test.reshape(-1, 1))\n",
    "y_pre1 = one_hot.fit_transform(y_pre.reshape(-1, 1))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 1., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 1., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       ...,\n",
       "       [0., 0., 1., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 1.],\n",
       "       [0., 0., 0., ..., 0., 1., 0.]])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 1., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 1., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       ...,\n",
       "       [0., 0., 1., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 1.],\n",
       "       [0., 0., 0., ..., 0., 1., 0.]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pre1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.737163269576891"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# logloss模型评估\n",
    "\n",
    "log_loss(y_test1, y_pre1, eps=1e-15, normalize=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 改变预测值的输出模式,让输出结果为百分占比,降低logloss值\n",
    "y_pre_proba = rf.predict_proba(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.  , 0.56, 0.23, ..., 0.07, 0.  , 0.  ],\n",
       "       [0.04, 0.01, 0.01, ..., 0.04, 0.81, 0.  ],\n",
       "       [0.  , 0.  , 0.  , ..., 0.  , 0.  , 0.  ],\n",
       "       ...,\n",
       "       [0.02, 0.19, 0.62, ..., 0.06, 0.07, 0.01],\n",
       "       [0.19, 0.01, 0.08, ..., 0.05, 0.11, 0.5 ],\n",
       "       [0.12, 0.01, 0.02, ..., 0.07, 0.74, 0.02]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pre_proba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7596486175115207"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf.oob_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7316244385161541"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# logloss模型评估\n",
    "\n",
    "log_loss(y_test1, y_pre_proba, eps=1e-15, normalize=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型调优\n",
    "\n",
    "n_estimators, max_feature, max_depth, min_samples_leaf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定最优的n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/houxiaojun/.virtualenvs/testai/lib/python3.7/site-packages/sklearn/ensemble/_forest.py:523: UserWarning: Some inputs do not have OOB scores. This probably means too few trees were used to compute any reliable oob estimates.\n",
      "  warn(\"Some inputs do not have OOB scores. \"\n",
      "/Users/houxiaojun/.virtualenvs/testai/lib/python3.7/site-packages/sklearn/ensemble/_forest.py:528: RuntimeWarning: invalid value encountered in true_divide\n",
      "  predictions[k].sum(axis=1)[:, np.newaxis])\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.13052544 0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/houxiaojun/.virtualenvs/testai/lib/python3.7/site-packages/sklearn/ensemble/_forest.py:523: UserWarning: Some inputs do not have OOB scores. This probably means too few trees were used to compute any reliable oob estimates.\n",
      "  warn(\"Some inputs do not have OOB scores. \"\n",
      "/Users/houxiaojun/.virtualenvs/testai/lib/python3.7/site-packages/sklearn/ensemble/_forest.py:528: RuntimeWarning: invalid value encountered in true_divide\n",
      "  predictions[k].sum(axis=1)[:, np.newaxis])\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.13052544 1.12249192 0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 1.11072075 0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 1.11072075 1.11026411 0.         0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 1.11072075 1.11026411 1.10882461 0.         0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 1.11072075 1.11026411 1.10882461 1.1096815  0.\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 1.11072075 1.11026411 1.10882461 1.1096815  1.11000453\n",
      " 0.        ]\n",
      "[1.13052544 1.12249192 1.12710064 1.11797621 1.11825835 1.11594733\n",
      " 1.11398644 1.11481455 1.11540453 1.11299048 1.11061987 1.11036434\n",
      " 1.10929958 1.11072075 1.11026411 1.10882461 1.1096815  1.11000453\n",
      " 1.11065837]\n"
     ]
    }
   ],
   "source": [
    "# 确定n_estimators的取值范围\n",
    "tuned_parameters = range(10, 200, 10)\n",
    "\n",
    "# 创建添加accuracy的一个numpy\n",
    "accuracy_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 创建添加error的一个numpy\n",
    "error_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 调优过程实现\n",
    "for j, one_parameter in enumerate(tuned_parameters):\n",
    "    rf2 = RandomForestClassifier(n_estimators=one_parameter, \n",
    "                                 max_depth=10, \n",
    "                                 max_features=10, \n",
    "                                 min_samples_leaf=10, \n",
    "                                 oob_score=True, \n",
    "                                 random_state=0, \n",
    "                                 n_jobs=-1)\n",
    "    \n",
    "    rf2.fit(x_train, y_train)\n",
    "    \n",
    "    # 输出accuracy\n",
    "    accuracy_t[j] = rf2.oob_score_\n",
    "    \n",
    "    # 输出log_loss\n",
    "    y_pre = rf2.predict_proba(x_test)\n",
    "    error_t[j] = log_loss(y_test, y_pre, eps=1e-15, normalize=True)\n",
    "    \n",
    "    print(error_t)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x400 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 优化结果过程可视化\n",
    "fig,axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 4), dpi=100)\n",
    "\n",
    "axes[0].plot(tuned_parameters, error_t)\n",
    "axes[1].plot(tuned_parameters, accuracy_t)\n",
    "\n",
    "axes[0].set_xlabel(\"n_estimators\")\n",
    "axes[0].set_ylabel(\"error_t\")\n",
    "axes[1].set_xlabel(\"n_estimators\")\n",
    "axes[1].set_ylabel(\"accuracy_t\")\n",
    "\n",
    "axes[0].grid(True)\n",
    "axes[1].grid(True)\n",
    "\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过图像展示,最后确定n_estimators=175的时候,表现效果不错"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定最优的max_features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.20869285 0.         0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.20869285 1.11019684 0.         0.         0.         0.\n",
      " 0.        ]\n",
      "[1.20869285 1.11019684 1.07692797 0.         0.         0.\n",
      " 0.        ]\n",
      "[1.20869285 1.11019684 1.07692797 1.06354285 0.         0.\n",
      " 0.        ]\n",
      "[1.20869285 1.11019684 1.07692797 1.06354285 1.05484917 0.\n",
      " 0.        ]\n",
      "[1.20869285 1.11019684 1.07692797 1.06354285 1.05484917 1.05267757\n",
      " 0.        ]\n",
      "[1.20869285 1.11019684 1.07692797 1.06354285 1.05484917 1.05267757\n",
      " 1.05434037]\n"
     ]
    }
   ],
   "source": [
    "# 确定n_estimators的取值范围\n",
    "tuned_parameters = range(5, 40, 5)\n",
    "\n",
    "# 创建添加accuracy的一个numpy\n",
    "accuracy_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 创建添加error的一个numpy\n",
    "error_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 调优过程实现\n",
    "for j, one_parameter in enumerate(tuned_parameters):\n",
    "    rf2 = RandomForestClassifier(n_estimators=175, \n",
    "                                 max_depth=10, \n",
    "                                 max_features=one_parameter, \n",
    "                                 min_samples_leaf=10, \n",
    "                                 oob_score=True, \n",
    "                                 random_state=0, \n",
    "                                 n_jobs=-1)\n",
    "    \n",
    "    rf2.fit(x_train, y_train)\n",
    "    \n",
    "    # 输出accuracy\n",
    "    accuracy_t[j] = rf2.oob_score_\n",
    "    \n",
    "    # 输出log_loss\n",
    "    y_pre = rf2.predict_proba(x_test)\n",
    "    error_t[j] = log_loss(y_test, y_pre, eps=1e-15, normalize=True)\n",
    "    \n",
    "    print(error_t)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x400 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 优化结果过程可视化\n",
    "fig,axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 4), dpi=100)\n",
    "\n",
    "axes[0].plot(tuned_parameters, error_t)\n",
    "axes[1].plot(tuned_parameters, accuracy_t)\n",
    "\n",
    "axes[0].set_xlabel(\"max_features\")\n",
    "axes[0].set_ylabel(\"error_t\")\n",
    "axes[1].set_xlabel(\"max_features\")\n",
    "axes[1].set_ylabel(\"accuracy_t\")\n",
    "\n",
    "axes[0].grid(True)\n",
    "axes[1].grid(True)\n",
    "\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过图像展示,最后确定max_features=15的时候,表现效果不错"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定最优的max_depth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.07692797 0.         0.         0.         0.         0.\n",
      " 0.         0.         0.        ]\n",
      "[1.07692797 0.84993135 0.         0.         0.         0.\n",
      " 0.         0.         0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.         0.         0.\n",
      " 0.         0.         0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.82649137 0.         0.\n",
      " 0.         0.         0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.82649137 0.82649137 0.\n",
      " 0.         0.         0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.82649137 0.82649137 0.82649137\n",
      " 0.         0.         0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.82649137 0.82649137 0.82649137\n",
      " 0.82649137 0.         0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.82649137 0.82649137 0.82649137\n",
      " 0.82649137 0.82649137 0.        ]\n",
      "[1.07692797 0.84993135 0.82786074 0.82649137 0.82649137 0.82649137\n",
      " 0.82649137 0.82649137 0.82649137]\n"
     ]
    }
   ],
   "source": [
    "# 确定n_estimators的取值范围\n",
    "tuned_parameters = range(10, 100, 10)\n",
    "\n",
    "# 创建添加accuracy的一个numpy\n",
    "accuracy_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 创建添加error的一个numpy\n",
    "error_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 调优过程实现\n",
    "for j, one_parameter in enumerate(tuned_parameters):\n",
    "    rf2 = RandomForestClassifier(n_estimators=175, \n",
    "                                 max_depth=one_parameter, \n",
    "                                 max_features=15, \n",
    "                                 min_samples_leaf=10, \n",
    "                                 oob_score=True, \n",
    "                                 random_state=0, \n",
    "                                 n_jobs=-1)\n",
    "    \n",
    "    rf2.fit(x_train, y_train)\n",
    "    \n",
    "    # 输出accuracy\n",
    "    accuracy_t[j] = rf2.oob_score_\n",
    "    \n",
    "    # 输出log_loss\n",
    "    y_pre = rf2.predict_proba(x_test)\n",
    "    error_t[j] = log_loss(y_test, y_pre, eps=1e-15, normalize=True)\n",
    "    \n",
    "    print(error_t)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABlwAAAFsCAYAAACpVxQCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl0XXd97/33V4Mly5Ysz3acwRns2LEDIRCmQCYPcdL2smjLXX0eSkvb21sut+3T0qe30HLLcNuH0tsFa7WlpfQWaC+lIyzgQmJbdmYCSSAYYluOM9hJ7HiSZ1vTkfR7/jhHjmIsWz5b0j5Her/WOsva+5yt/dHXYaHj7/l9f5FSQpIkSZIkSZIkSeWryTuAJEmSJEmSJElStbPhIkmSJEmSJEmSlJENF0mSJEmSJEmSpIxsuEiSJEmSJEmSJGVkw0WSJEmSJEmSJCkjGy6SJEmSJEmSJEkZ2XCRJEmSJEmSJEnKyIaLJEmSJEmSJElSRjZcJEmSJEmSJEmSMrLhIkmSJEmSJEmSlJENF0mSJEmSJEmSpIzq8g6Qt4gI4BLgZN5ZJEmSpHHUDLycUkp5B1Fl8z2TJEmSJqmLfs806RsuFN847Mk7hCRJkpSDS4G9eYdQxfM9kyRJkiari3rPZMOl9Cmtl156iZaWlnG/eaFQYOPGjaxdu5b6+vpxv3+1s37ZWL9srF821i8b65eN9cvG+mWXdw1PnDjBZZddBq5Y0Mjk+p4J8v/fTLWzftlYv2ysXzbWLxvrl431y8b6ZZN3/cp9z2TDpaSlpSW3hktTUxMtLS3+D68M1i8b65eN9cvG+mVj/bKxftlYv+ysoapRXu+ZwP/NZGX9srF+2Vi/bKxfNtYvG+uXjfXLplrrV5N3AEmSJEmSJEmSpGpnw0WSJEmSJEmSJCkjGy6SJEmSJEmSJEkZ2XCRJEmSJEmSJEnKyIaLJEmSJEmSJElSRjZcJEmSJEmSJEmSMrLhIkmSJEmSJEmSlJENF0mSJEmSJEmSpIxsuEiSJEmSJEmSJGVUl3eAyezwqR7+54YdfKe9lrvuSnnHkSRJkiRp0kopcehUD3uOdrH3aBd7jnax52gn+451cfhQDQ92b6Vl6hSaG+uY3lDH9ME/G85x3FhHQ11t3j+SJEkaZzZccjStoY6vb3mZrkKw9eUT3Lh4Tt6RJEmSJEmakAYGEgdP9rD3WGepmfJKU2Xv0S72Huuip29gmKtr+OGRly/qflNqa5jeWMe0hlqmN9TTXGrETCs1ZZqHa9g01tHcUHpdYx3TptRRWxPZCyBJksacDZccNdbXcuvSuazfdoCN2w/acJEkSZJ0RkTcCHweuBZ4GPj5lNLB87z+vcAXzjr9YErptrNe93ngjpTS4tHMK+WtfyBx4ER3cYXKsU72HOkqfV1sqrx8rJve/uEaKkURsKClkUtnTuXSmU0sap3KvOZ6fvTUVhZfs4zOwgCne/o42dPHqe4+TvUMeZSOO3v7AejtH+DI6V6OnAboyvSzTZtSe6YB0zykOTOtYehxPdMbaod8XWzqDG3wNNTVEGHzRpKksWLDJWd3XjeP9dsOsGHbAX7vruX+4iNJkiSJiKgBvgL8I/CTwGeATwPvPs9lXwa+NuT4k0DLWd/3ZuC9wIujGFcaF339A+wvNVReGfvVeaap8vKxLvoGzj+uuyZg4YypLJo59UxT5dKZU7m0tfj1ghmNTKl79Xa3hUKBGYee4u5brqS+vv6COfsHEqd7X2nAnCz9ebrUlBls1pzufeW5U90FTvf0F5/rKZy5ttBf/HlO9/Zzurefgyd7yi8gUFcTP77CpnFI4+Yco9F+rHHTUM+0hlrqat0WWJKks9lwydmtS+dSG4ldhzt55uApls5vzjuSJEmSpPzdCswCPppS6ouIjwGPRMS0lNLpc12QUuoFegePI+IO4I+GHNcBfwV8HXjdWIaXylHoH2DfsW72DBn5NbSpsv9EN/0XaKjU1QQLWxu5tLXYSFk0pKmyqHUqC2Y0Uj/GjYLamqClsZ6Wxgs3Zy6kp6//VY2b00NW1Axt5LzSuDm7kVN6TW8fKUHfQOJ4V4HjXYXM2abWF1fdDB2NNu2sRs70hjqm1gXt+4Njj79Eba372lys/v5+tlq/slm/bKxfNtYvm8H6rekfYASfd6gYNlxy1txYx7LWxLajwfqt+224SJIkSQK4GXg8pdRXOt4C1AI3Uhwvdl4RsQS4Glg/5PRvAMeBv+c8DZeIaAAahpxqhuKn/AuF7P9IW47B++Z1/2pXKfXr6Rtg//Fu9pRWo+w52s3eY12lRzcHTnRzgX4K9bXBJTOmsqi1kUWlJsqlrY1c0lpcsTKvueH8+50M9FMY6L+o3HnWrwZoaaihpWEKtEwp+/sMDCQ6C/1DmjL9r2rIFBs3/a8akTbc8eA+N12FfroK/XScGsmqm1r+bVd72fll/bKxftlYv2ysXza1/F5375h/WOJcyv3/fRsuFeA1sxLbjsK9W/fzm6uW5B1HkiRJUv4WAB2DBymlgYg4Cswf4fU/ATyZUjoAEBGXAB8GbgEu9KbjQ8BHzj65ceNGmpqaRnj7sdHW1pbr/avdWNevMABHe+BIT3CkBw73xCvH3XCiAInzj9Gui8SsBpjVUPxzZunP2Y2JmaWeQ00UgBPFCzqLj0Mvw6Ex/ekm7n9/U0uPuYMn6kqPaed+fd8A9PRD96secda5KP7ZBz0DXLCRJknScB64/z7qc5hi2dnZWdZ1NlwqwPUzE/9aE7TvO8ELh09zxexhfquRJEmSNJmc/S/TAYz0ny3vBu4Zcvxp4PMppW2l1S/n8wngU0OOm4E9a9eupaWlZZhLxlahUKCtrY01a9aMaA8Nvdpo1a+rt/9VK1L2Huti79Fu9h4vjv46dKr3gt+jsb6GRa2lFSqtU1/5urSPyuxpU6g53wqVHPjfXzbWLxvrl431y8b6ZWP9ssm7fidOnCjrOhsuFWBaPbxp8Uweff4IG7bt5z/fcnXekSRJkiTlax+wfPAgImqBVmD/hS6MiGkUV7IMXaXyH4FTEfGrQD0wNSKOpZRaz74+pdQDnJkRFFH8x+/6+vrc/7GgEjJUswvV73RPH3uPDdmIvrSPyp6jnew91kXHCBoqTVNqX7UZ/aLWIV/PLDZUBv+bqjb+95eN9cvG+mVj/bKxftlYv2zyql+597ThUiHWXjePR58/wr1bbbhIkiRJ4mHg9yKirrSPy+uAPuAHI7h2NXAKeGzIuSuHfL0W+EPgbaOUVVXiZHcfBzpevRF9scFSPD7aeeFZ5dMb6koNlXM3VVqb6qu2oSJJkpSVDZcKsXr5PD76zR384MVj7D/ezYIZjXlHkiRJkpSfRyhuSfGxiPhrig2Sr6aUOiOiFTiZUhpu5++7gY0ppYHBEyml3YNfR8RBoG/oOU1czxw4ye/++w/Z+XItnd+574Kvb2mse9WKlMGvL505lUtbm2iZWmdDRZIkaRg2XCrE/JZGXn/FTL7/wlE2bNvPL751cd6RJEmSJOUkpTQQEe8CvgD8DvAQ8Culp49SXPGyZZjL7wJ+f8xDqip8/tu72PLScQa3BJrZVM+lM5tKq1KmlhorrzRYWhodeSJJklQuGy4VZN2KBXz/haOs32rDRZIkSZrsUkpPAq89x/nzLi9IKV1+gee/BnwtWzpVg4GBxKb2gwC8+5p+/t+fW8PM6VNzTiVJkjRx1eQdQK9Yt3IBAI/tOsyR0xfejFCSJEmSpOE8tfc4h072MG1KLTfOTkxv8DOXkiRJY8mGSwW5bFYTKy5pYSBB2/b9eceRJEmSJFWxTe0HAHjbNbOp892/JEnSmPNXrgqzbkVxlcv6rTZcJEmSJEnlGxwntmrZvJyTSJIkTQ42XCrMXdcXGy7ffvYwJ7oLOaeRJEmSJFWjPUc7ad93gpqAW5fOyTuOJEnSpGDDpcJcM6+Zq+dOo7d/gPt3HMw7jiRJkiSpCt1Xej/5+itmMmvalJzTSJIkTQ42XCrQupWOFZMkSZIkle/MOLHl83NOIkmSNHnYcKlAd61cCMADTx+iq7c/5zSSJEmSpGpyqqeP7z53GIDVNlwkSZLGjQ2XCrTikhYWtU6lq9DPgzsP5R1HkiRJklRFHt55iN7+ARbPbuLqudPyjiNJkjRp2HCpQBFxZqzYhm2OFZMkSZIkjVxb+wGgOE4sInJOI0mSNHnYcKlQd5UaLpvaD9DbN5BzGkmSJElSNegfSNy/o7h/i+PEJEmSxpcNlwp14+UzmdvcwMnuPh59riPvOJIkSZKkKvDki0c52lmgpbGONyyemXccSZKkScWGS4WqqQnWXlf8NJJjxSRJkiRJI7GpNE7s9mXzqK/1Lb8kSdJ48revCnbXyoUAbNx2gP6BlHMaSZIkSVKl27T9lf1bJEmSNL5suFSwN101ixlT6zl8upcndh/JO44kSZIkqYLt6jjNc4dOU1cT3Lp0bt5xJEmSJp3cGi4RsTAiHoyIG0b4+vdExEsRcTIi/iIiakvnb4uIdNbji2MafpzU19awpjRWbP1Wx4pJkiRJkoa3uTRO7I1XFj+8J0mSpPGVS8MlIv4GeBm4ZYSvXwp8Dvh14CbgbuCXh7zkOWDmkMf7RzNvntatWAAU93EZcKyYJEmSJGkYg/u3rHacmCRJUi7yWuHyB8CVF/H6dwP3pZS+nlLaAXwGeM+Q5w+klI4NeXSOZtg8vW3JHKZNqWXf8W5+tPd43nEkSZIkSRXoeGeBJ3YfBWy4SJIk5aUuj5umlDqAjogY6SU3A/cPOX4M+GS88g2mR8T3gaXAvwHvSyn1nusbRUQD0DDkVDNAoVCgUCiM/IcYJYP3HO7etcBtS+fyra37uedHe1mxYNo4pqt8F6qfzs/6ZWP9srF+2Vi/bKxfNtYvu7xr6N+dNPE8sPMg/QOJpfOnc/nsprzjSJIkTUq5NFzKsADoGHJ8mGL22aXjy4CfLp1vA34J+JthvteHgI+cfXLjxo00NeX3S2lbW9uwz83tCaCWrz6xi+sKzzLyPtXkcb766cKsXzbWLxvrl431y8b6ZWP9ssurhp2dE2ZBuKSSTe0HAVjl6hZJkqTcVEvDBSDO8XUCvgssLa2aISK+CtzO8A2XTwCfGnLcDOxZu3YtLS0to5t4BAqFAm1tbaxZs4b6+nNvanhLTx9f/pMH6Oge4JrXv51rFzSPc8rKNZL6aXjWLxvrl431y8b6ZWP9srF+2eVdwxMnToz7PSWNnUL/AA88XWy4rF4+L+c0kiRJk1e1NFz2AXOHHM8GCsCRlFICuoc8dwxYPNw3Sin1AD2Dx4NTyerr63P9B4Pz3X9mfT23LJnLpvYDbHq6g5WXzRrndJUv77+/amf9srF+2Vi/bKxfNtYvG+uXXV419O9Nmlie2HWEk919zJ42hRsum5l3HEmSpEmrJu8AI/Qw8NYhx28Gvp1SShHxzxHx4SHPXQ7sHs9w42HdygUArN+6P+ckkiRJkqRK0tZ+AIDbl82jtsYZ1JIkSXmpqIZLRLRGRO05nvoycFtEvCMilgHvB75Ueu5B4Fci4jURcTvwDuCL4xJ4HK1ePo+6mmDH/pPs6jiddxxJkiRJUgVIKbGp1HBZ7f4tkiRJuaqohgtwFLj+7JMppWeBXwU+AzwBfAv4QunpzwFfB+4H/g74zZTS4+OSdhy1Nk3hLVfPBlzlIkmSJEkqeubgKV460sWU2hrevmRO3nEkSZImtVwbLimlSCltGe74rNd+KaV0aUqpOaX0GymlgdL5/pTSb6WUZqeUrkopfeFc108Ed64ojRXbZsNFkiRJksSZ1S1vvWY20xqqZZtWSZKkianSVrjoPNaumE8E/PClY7x8rCvvOJIkSZKknG1uPwjAKseJSZIk5c6GSxWZ19zIG66YCcAGV7lIkiRJ0qTWcaqHJ188ChT3/ZQkSVK+bLhUmTNjxdzHRZIkSZImtft3HCQlWHFJCwtnTM07jiRJ0qRnw6XKrFtZbLg8sfsIHad6ck4jSZIkScrL4P4tqx0nJkmSVBFsuFSZS2c2cf2iGQwkaNt+IO84kiRJkqQcdBf6efiZDsCGiyRJUqWw4VKFBle5OFZMkiRJkian7zx/mM7efua3NLByUUvecSRJkoQNl6o02HB59LkOjncVck4jSZIkSRpvm0vjxFYtn09E5JxGkiRJYMOlKl09dzpL5k2n0J+4b4djxSRJkiRpMkkpsbn9IACrl8/LOY0kSZIG2XCpUo4VkyRJkqTJadvLJ9h3vJup9bW89eo5eceRJElSiQ2XKjXYcHlw5yE6e/tyTiNJkiRJGi+bSuPE3rZkDo31tTmnkSRJ0iAbLlXquoUtXDZrKt2FAR58+lDecSRJkiRJ42RwnNia5fNzTiJJkqShbLhUqYhg3YrSWLFtjhWTJEmSpMlg//Funtp7nAi4fZn7t0iSJFUSGy5VbN3KhQDc136Qnr7+nNNIkiRJksba5h3FcWI3XNbK3OaGnNNIkiRpKBsuVex1l7Uyv6WBkz19PPrs4bzjSJIkSZLG2OA4sdWOE5MkSao4NlyqWE1NcOfgWLGtjhWTJEmSpImss7ePR57tAGDVcseJSZIkVRobLlVucB+Xjdv309c/kHMaSZIkSdJYeeSZDnr7Brh05lSund+cdxxJkiSdxYZLlXvjlbOY2VTP0c4Cj+8+knccSZIkSdIY2dRe3L9l9fL5RETOaSRJknQ2Gy5Vrq62hjXXFWf3bnCsmCRJkiRNSAMDift2uH+LJElSJbPhMgGsW1nax2XbfgYGUs5pJEmSJEmjbcueY3Sc6qW5oY43Xjkr7ziSJEk6BxsuE8DN18xhekMdB070sGXPsbzjSJIkSZJG2ebSOLFbrp3LlDrfykuSJFUif0ubABrqarlj2TzAsWKSJEmSNBFtbh8cJzYv5ySSJEkajg2XCWJwrNi9W/eTkmPFJEmSJGmieOlIJzv2n6S2Jrj9WhsukiRJlcqGywRx69K5NNTV8OKRTtr3ncw7jiRJkiRplAyOE3v9FTNpbZqScxpJkiQNx4bLBDGtoY5bl84FYP3WfTmnkSRJkiSNlk2lcWJrls/POYkkSZLOx4bLBDI4Vmz9NvdxkSRJkqpdRNwYEVsioisiNkbEeWdJRcR7IyKd9XhgyPO/FhF7I+JwRPx5RPh+sAqc6C7w2K7DAKxy/xZJkqSK5i/YE8iq5fOpqwl2HjjFc4dO5R1HkiRJUplKzZCvAN8ElgBdwKcvcNmXgZlDHp8D9pW+3+uAPwLeCbwdeAfw7rHIrtH10M5DFPoTV82ZxlVzp+cdR5IkSedhw2UCmTG1nrdeMweA9Vtd5SJJkiRVsVuBWcBHU0p7gI8B74yIacNdkFLqTSkdG3wAdwDrS08vB/4qpfR4Smk78Bhw3dj+CBoNm0vjxFZf5zgxSZKkSleXdwCNrnUrFvDQzkNs2Laf/3r7NXnHkSRJklSem4HHU0p9peMtQC1wI/DwhS6OiCXA1ZQaLimlLw95bjHFVS7/Psy1DUDDkFPNAIVCgUKhcJE/xugYvG9e989LX/8A9+04AMCtS2aV/fNP1vqNFuuXjfXLxvplY/2ysX7ZWL9s8q5fufe14TLBrF0xnz/42lP8aM9x9h7rYlHr1LwjSZIkSbp4C4COwYOU0kBEHAVGuszhJ4AnU0oHhp6MiJ8H/jfw7ymlfx3m2g8BHzn75MaNG2lqahrh7cdGW1tbrvcfb8+egONddTTVJQ5s+y73bM/2/SZb/Uab9cvG+mVj/bKxftlYv2ysXzZ51a+zs7Os62y4TDBzpjdw0+JZPL7rCOu37udX3nZl3pEkSZIklSfOcZxGeO3dwD3nOP8Nivu3fD4ifjaldK5VLp8APjXkuBnYs3btWlpaWkZ4+9FVKBRoa2tjzZo11NfX55IhD3+y/mngBdasuISf+onry/4+k7V+o8X6ZWP9srF+2Vi/bKxfNtYvm7zrd+LEibKus+EyAa1bsYDHdx1hgw0XSZIkqVrto7jvCgARUQu0AhfcrLG0z8stDFmlEhErgSMppZeBb0TEPwLv5hxjxVJKPUDPkGsBqK+vz/0fCyohw3i6/+niIqe1KxaOys892eo32qxfNtYvG+uXjfXLxvplY/2yyat+5d6zZpRzqAKsW7kAgCdeOMKhkz0XeLUkSZKkCvQwcFNEDH5I7nVAH/CDEVy7GjgFPDbk3O8Dvz7kOAH9o5BTY+S5Q6d4vuM09bXBLUvn5B1HkiRJI2DDZQK6pHUqr710BinBxu0X/ACcJEmSpMrzCHAI+FhEXAr8IfDVlFJnRLSWVrwM525gY0ppYMi59cDPR8TrIuIG4Gc598gxVYjN7cXtd9581WyaG/1UrCRJUjWw4TJB3Vla5bJ+qw0XSZIkqdqUmiXvAn4SeBZoBD5QevoocL4NPe7ix5sp/xv4B4qNlw3AF4EvjF5ijbZN7QcBWLVsXs5JJEmSNFLu4TJBrVuxgD9d/zTfee4wxzsLzGjyE1GSJElSNUkpPQm89hzn4wLXXX6Ocwn4cOmhCnf0dC/f230EgFXL5+ecRpIkSSPlCpcJ6qq507l2fjN9A4lNpaXokiRJkqTK98DOgwwkWLagmctmNeUdR5IkSSNkw2UCOzNWbJtjxSRJkiSpWmzaXhonttxxYpIkSdXEhssEdlep4fLQzkOc7unLOY0kSZIk6UJ6+wZ4cOchAFY7TkySJKmq2HCZwJYtaOaK2U309A3wwNOH8o4jSZIkSbqAx3Yd5lRPH3OmN/DaS1vzjiNJkqSLYMNlAosI1jlWTJIkSZKqxub20jixZfOoqYmc00iSJOli2HCZ4NatKDZc7ms/QHehP+c0kiRJkqThpJRo234AcP8WSZKkamTDZYJ77aWtLGhp5HRvP99+tiPvOJIkSZKkYTx94CR7j3XRUFfD25bMyTuOJEmSLpINlwmupmbIWLGtjhWTJEmSpEo1OE7s5mvm0DSlLuc0kiRJulg2XCaBO0tjxdraD1DoH8g5jSRJkiTpXAbHia1ePj/nJJIkSSpHbg2XiFgYEQ9GxA0jfP17IuKliDgZEX8REbVDnvvdiDgYEUci4sNjl7o63bR4JrOmTeFYZ4HHdx3JO44kSZIk6SwHT3bzwz3HAPdvkSRJqla5NFwi4m+Al4FbRvj6pcDngF8HbgLuBn659NztwIeBnwbuBD4QEWvGIHbVqqutYe11xU9IOVZMkiRJkirP/TsOkhJcv2gG81sa844jSZKkMuS1wuUPgCsv4vXvBu5LKX09pbQD+AzwntJz7wW+lFJ6JKX0BPClIc+p5M7SPi4btu1nYCDlnEaSJEmSNNSm0v4tjhOTJEmqXrnswpdS6gA6ImKkl9wM3D/k+DHgk1H8BjcDHznruY8P940iogFoGHKqGaBQKFAoFEaaZ9QM3nOs733T5TOY3lDHwZM9PLGrgxsvbx3T+42X8arfRGX9srF+2Vi/bKxfNtYvG+uXXd419O9OqizdhX4efuYQ4DgxSZKkapZLw6UMC4COIceHKWafPcxz5/tI0Id4dYMGgI0bN9LU1JQ9aZna2trG/B7XNtfw/Z4a/vqb3+WdiwfG/H7jaTzqN5FZv2ysXzbWLxvrl431y8b6ZZdXDTs7O3O5r6Rze/S5DroLAyyc0ciKS1ryjiNJkqQyVUvDBSDO8XUa5rnzzcz6BPCpIcfNwJ61a9fS0jL+v9gWCgXa2tpYs2YN9fX1Y3qv2m0H+P4//5Bnu5q46663cxErjCrWeNZvIrJ+2Vi/bKxfNtYvG+uXjfXLLu8anjhxYtzvKWl4bduL48RWLZ83Id6nSZIkTVbV0nDZB8wdcjwbKABHhnlu2J3hU0o9QM/g8eAvs/X19bn+g8F43H/VdQtprH+KPce62Xmoi5WLZozp/cZT3n9/1c76ZWP9srF+2Vi/bKxfNtYvu7xq6N+bVDlSSty34wDg/i2SJEnVribvACP0MPDWIcdvBr6dUkrDPPfIOGarGlOn1HLb0uI84PVbh+1JSZIkSZLGyda9JzhwooemKbW8+arZeceRJElSBhXVcImI1oioPcdTXwZui4h3RMQy4P3Al0rP/QPw7oh4W0TcBLx7yHM6y7qVCwBYv82GiyRJkiTlra29uLrlliVzaaw/19thSZIkVYuKargAR4Hrzz6ZUnoW+FXgM8ATwLeAL5SeewD4OPA1YAPwZymlzeOUt+rcsXwe9bXBswdP8ezBk3nHkSRJkqRJbXOp4bJq+byck0iSJCmrXBsuKaVIKW0Z7vis134ppXRpSqk5pfQbKaWBIc/9WUppTkppVkrpj8cje7Vqaazn5mvmAI4VkyRJkqQ8vXysi20vnyAC7lhmw0WSJKnaVdoKF42DdSscKyZJkiRJedu84yAAN14+k9nTG3JOI0mSpKxsuExCa66bT00UN2d86Uhn3nEkSZIkaVLatN1xYpIkSROJDZdJaPb0Bt545SwANrjKRZIkSZLG3emePr7z3GEA1iyfn3MaSZIkjQYbLpPUmbFi7uMiSZIkSePu4WcO0ds/wOWzmrhm3vS840iSJGkU2HCZpO5cWWy4fP/Foxw80Z1zGkmSJEmaXDa1F/dvWb18PhGRcxpJkiSNBhsuk9TCGVO54bJWUoINpbnBkiRJkqSx1z+QuG/HYMPF/VskSZImChsuk9i60iqXDY4VkyRJkqRxs+Wloxw53UtzYx03lfbXlCRJUvWz4TKJDe7j8p3nD3P0dG/OaSRJkiRpchgcJ3bbtfOor/VtuSRJ0kThb3aT2OI501i2oJn+gcSmdseKSZIkSdJ42FQa6+w4MUmSpInFhsskd9fKhQBs2OZYMUmSJEkaay8cPs0zB09RWxPcttSGiyRJ0kRiw2WSG9zH5aFnOjjV05dzGkmSJEma2AbHid20eCYzmupzTiNJkqTRZMNlkls6fzpXzplGb98A9+84mHccSZIkSZrQNrcPjhObn3MSSZIkjTYbLpNcRJxZ5bLesWKSJEmSNGaOdxV4fNcRwIaLJEnSRGTDRaxbUWy43L/jIN2F/pzTSJIkSdLE9ODOQ/QNJK6ZN53Fc6blHUeSJEmjzIaLeM2lM7hkRiOdvf08/ExH3nEkSZJLl0JHAAAgAElEQVSkqhcRb4yIOMe5/y+vTMrfpu3FcWKrls/LOYkkSZLGgg0XERHcOThWbKtjxSRJkqRR8B2g+axzLwO/nUMWVYBC/wAPPF3cN3ON48QkSZImJBsuAl4ZK7ap/QCF/oGc00iSJElVL4B01rkbgMM5ZFEF+N7uo5zo7mPWtCm87vKZeceRJEnSGLDhIgDesHgWc6ZP4XhXge8+73tASZIkqRwRMRAR/RSbLccion/wAXwZ+EC+CZWXTe3FcWK3XzuP2pq4wKslSZJUjWy4CIDammDNdcVVLvc6VkySJEkq15XA1aWvbwCuKj0WA7NSSv+aUy7lKKV0puGy2v1bJEmSJiwbLjpjXWkfl43bDtA/cPb0A0mSJEkXklJ6IaW0G+gFdpeOX0gpvZRS6ss5nnLy3KFTvHC4kym1Nbx96dy840iSJGmM2HDRGW+5ajYtjXV0nOrhyReP5h1HkiRJqloppakppZPDPR8RH4qIlvHMpPxsaj8IwJuvns30hrqc00iSJGms2HDRGVPqali9fD4A9z7lWDFJkiRpDP0u0Jp3CI2PTdsdJyZJkjQZ2HDRq9xZGiu2Ydt+UnKsmCRJkjRG3DV9kjg8ZILAqtIH3CRJkjQx2XDRq9y6dC5T62vZe6yLrXtP5B1HkiRJkqra/U8fYiDB8oUtLGqdmnccSZIkjSEbLnqVxvpabl9W3MTx3q37ck4jSZIkSdVtc3txnNgax4lJkiRNeGU1XCLiv0VE/VnnbouIh0cnlvJ054riWLH1Wx0rJkmSJI0Rf9GeBHr6+nlo5yHAcWKSJEmTQbkrXD4BnL0Wuh14Y7Y4qgR3LJvHlNoanu84zbMHT+UdR5IkSZqI3MNlEvju80c43dvPvOYGrl80I+84kiRJGmN1F/PiiLhl8Evg5og4PeR4LcWmi6pcc2M9b1syh/t2HOTerftZMr8570iSJEnSRPN+oCPvEBpbg+PEVi2fR02NPTZJkqSJ7qIaLsDfl/5MwGeBgdLxAPAM8J5RyqWcrVuxgPt2HGT91v385qoleceRJEmSqkpEPAr8E/BvKaX9Zz+fUvqn8U+l8ZRSYtP2YsNltePEJEmSJoWLGimWUroypXQlxRUt1w8ep5SuTimtSyk9NTYxNd5WXzef2ppg+74TvHi4M+84kiRJUrX5PHAn8FxE3B8RvxYRsy/mG0TEjRGxJSK6ImJjRJx31/WIeG9EpLMeDwx5/hciYldEdETEn0WESy7GUPu+k7x8vJvG+hpuvmZO3nEkSZI0Dsrdw2UDUBjNIKoss6ZN4U1XzgJg/bZ9OaeRJEmSqktK6X+llH4SmA/8FXALsDMi1pcaIw3nuz4iaoCvAN8ElgBdwKcvcNsvAzOHPD4H7Ct9v8XA/wJ+B1gD/DLwM+X8bBqZTaVxYm+7Zg6N9bU5p5EkSdJ4KKvhklK6K6XUNdzzEfGtC336SpXvrpULAFi/9ccmIEiSJEkamWZgLrAQmAr0A++i2Eg5n1uBWcBHU0p7gI8B74yIacNdkFLqTSkdG3wAdwDrS0+vBraklL6aUvoBsAl4e4afSxcwuH+L48QkSZImj4vdw2Wk3go0jtH31jhZu2IB//3r23jyxWPsP97Nghn+lUqSJEkjERG/Q3EFyY3AA8CXgJ9JKR2NiIXArgt8i5uBx1NKfaXjLUBt6fs9PIL7LwGu5pWGy1PAnwx5yWzg+WGubQCGrsBpBigUChQK+Qw6GLxvXve/WAdOdPPDPccBePs1s3LPXW31qzTWLxvrl431y8b6ZWP9srF+2eRdv3LvO1YNF00A81saufHyVp588Rgbt+/nF96yOO9IkiRJUrW4C/gi8FMppcNnPddJccTY+SwAOgYPUkoDEXGU4oiykfgJ4MmU0oHS9Y8NPhERNwFvA357mGs/BHzk7JMbN26kqalphLcfG21tbbnef6QePRBALVdMT3zv4c15xzmjWupXqaxfNtYvG+uXjfXLxvplY/2yyat+nZ3l7Wtuw0XnddfKhTz54jHWb7XhIkmSJI1USmn1eZ47Djw+gm9z9qb2AaQRRrgbuOfHvmHEcuD/AB9KKf1omGs/AXxqyHEzsGft2rW0tLSM8Pajq1Ao0NbWxpo1a6ivr88lw8X42peeBDp455uWcPdtV+Udp+rqV2msXzbWLxvrl431y8b6ZWP9ssm7fidOnCjrOhsuOq87Vyzgj+9p57FdRzhyupdZ06bkHUmSJEmqeBHRTHHfla+nlB6MiHuA3cB/SymdGsG32AcsH/L9aoFW4IIbLJb2ebmFs1apRMS1wP3AX6WUPnWuawFSSj1Az5DrAKivr8/9HwsqIcOFdPX28+hzRwC4c+XCispbDfWrZNYvG+uXjfXLxvplY/2ysX7Z5FW/cu9ZM8o5Bo30U1eqcJfPbuK6hS30DyQ2bT+QdxxJkiSpWnwOeD3wcun4f1LcU+UvRnj9w8BNETH4IbnXAX3AD0Zw7WrgFDB0jFgTxZUtf51S+vgIM6gM3362g56+ARa1TmXZgua840iSJGkcjVXD5eyl76pid61cAMD6bRf8MJ0kSZKkonXAL6SUngFIKd0PvA/4DyO8/hHgEPCxiLgU+EPgqymlzohoLa14Gc7dwMaU0sCQc78NHAP+vHR9a0RMv8ifSSOwqb34QbXVy+edWR0kSZKkyWGsGi6vAfaM0ffWOFtXarg88kwHJ7sLOaeRJEmSqsIhYMVZ55YDR0ZycalZ8i7gJ4FngUbgA6WnjwLXn+fyu/jx/VtWAzeV7n+09PjmSLJo5AYGEpt3HARg1fL5OaeRJEnSeCtrD5eI+DXgGymlfed6PqX0UqZUqijXzJvOVXOn8fyh09y34yDvuGFR3pEkSZKkSvcR4F8i4h8o7t2yGHgPxVUuI5JSehJ47TnOn3fZRErp8nOcu32k91X5frT3OIdO9jC9oY43XTUr7ziSJEkaZ+WucPltzvGLvyamiDgzVmyDY8UkSZKkC0op/ROwluKH3G4v/bkupfTlXINpTG0ujRO7ZekcGurON/VNkiRJE1FZK1yA/wF8OCIeSSmdGs1AqkzrVizkM/c/x/07DtHV28/UKb55kCRJks4npfQd4Dt559D4adtebLisWuY4MUmSpMmo3IbLNRRXxzxTWiJ/evCJlNLHRyOYKsvKRS0sap3K3mNdPPTMIe5csSDvSJIkSVLFiogm4P3AtcDgp5UCuCGl9LrcgmnM7DnayY79J6kJuH3ZvLzjSJIkKQfljhRbDDwNrAfmAVeWHotHcnFE3BgRWyKiKyI2RsQFfxuNiPdFxEsRcTQi/mDI+cURkc56PFDGz6TziAjWlcaKrd/qWDFJkiTpAv4B+CngOmAJcAj4GeD+PENp7GxuPwjA66+YyaxpU3JOI0mSpDyUtcIlpfRL5d4wImqArwD/CPwk8Bng08C7z3PNcuAvgf9A8Y3KNyLiyZTSvaWXFCg2fgb1lZtPw1u3cgF/98guNrUfoLdvgCl15fbrJEmSpAlvDcVmy7XAf08p/V5E/BD4xXxjaaxsKu3fsnq548QkSZImq0z/Yh4Rb4yIn42Imy7isluBWcBHU0p7gI8B74yIaee55g5gW0rpnpTSExQ/LfZ/DXn+UErp2JCH+8qMgddfPpO5zQ2c7O7jO88fzjuOJEmSVMmOAcso7uHymoiop7i65S25ptKYONld4Lul90irbLhIkiRNWmWtcImIRcDXKS6Nfxm4JCKeBd5RaqKcz83A4ymlwVUoWyjONL4ReHiYa6YCXUOOO4BVQ477I2IzxTcvbcAvpJSOD5O9AWgYcqoZoFAoUCgULhB99A3eM497l2P1srn80xN7uOdHe3nrla15x6m6+lUa65eN9cvG+mVj/bKxftlYv+zyrqF/d+Pij4B7gUuBB4ANpfPb8wqksfPwMx0U+hNXzpnG1XPP91lCSZIkTWRlNVyAvwG+B7w1pdRbamL8OfA54O4LXLuAYsMEgJTSQEQcBc73MaAtwMcj4kqKnxT7WWDGkOfnA78F/GfgG8AHgQ8N870+BHzk7JMbN26kqanpAtHHTltbW273vhitpwKo5Vtb9vDmuheoibwTFVVL/SqV9cvG+mVj/bKxftlYv2ysX3Z51bCzszOX+04mKaW/jYhvA8eBXwb+H6CF4vsmTTCD48RWLZtHRIW8SZIkSdK4K7fh8jbg+pRSL0BKqSci/hj40QivP/s30ADScC9OKW2KiH8BnqG4h8u3gDeUnt4DXJFS2g8QEX8P/PR57v0J4FNDjpuBPWvXrqWlpWWE8UdPoVCgra2NNWvWUF9fP+73v1hr+gf48icf4HhXH/NWvJk3Lp6Va55qq1+lsX7ZWL9srF821i8b65eN9csu7xqeOHFi3O85GaWUBlez9AAfzzOLxk7/QOL+HQcBWH2d48QkSZIms3IbLk9R3Ozxj4ac+0Vg2wiu3QcsHzyIiFqgFdh/votSSr8UEb9FcbTYBykuzac0mmzotccofnJsuO/TQ/ENz+D9Aaivr8/1Hwzyvv9I1dfD6uUL+MqTe2hr7+DmJZXxhqJa6leprF821i8b65eN9cvG+mVj/bLLq4b+vY29iFgHPJZSOpp3Fo2tJ188ytHOAjOm1vOGK2bmHUeSJEk5qinzuv8C/JeIaI+IeyKiHXhf6XEhDwM3RcRgs+d1QB/wg+EuiIi3RsTnU0rHS6tq3gh8u/TcJyPib4e8/HJg90X/RBqxdSsXALBh235SGnZhkiRJkjSZfZbiex1NcJu2F8eJ3X7tXOpqy32LLUmSpImgrN8GU0pbgaXAx4D7S39em1J6agSXP0JxLNjHIuJS4A+Br6aUOiOitbTi5WwvAe+OiHURsRa4DfhS6bkHgJ+NiJsj4kbgl4AvlvNzaWTevmQOTVNq2Xe8mx/tOZ53HEmSJKkS/TnwW8O8v9EEcmb/luWVsfpfkiRJ+Sl3pBgppdPAP5dx3UBEvAv4AvA7wEPAr5SePkrxU2BbzrrmpYh4H/D3QAH4TymlXaXn7o2IPwW+AvQDf5lS+tfyfiqNRGN9Lbcvm8e3frSPe7fu57WXteYdSZIkSao0h4E5wJMR8Vng9OATKaV/yC2VRtWujtM8d+g0dTXBrdfOzTuOJEmSclZWwyUi/hj425TS7nKuTyk9Cbz2HOfjPNd8gWKT5lzPfQL4RDlZVJ51KxbwrR/tY/3WffzeumvP7IUjSZIkCYD3Utw7sgf4j0POJ8CGywSxubS65U1XzaKl0b2RJEmSJrtyV7jcDTyBe6VMWrcvm8eUuhp2H+5k54FTXLugOe9IkiRJUsVIKd2edwaNvbbS/i2rljlOTJIkSWXu4QJ8EPhIRFw2mmFUPaY31HHLkjkA3Lt1X85pJEmSJGl8He8s8L0XjgKw2v1bJEmSRPkrXH4O6AOejoj/w6vnEf/yaART5Vu3ciGb2g+yfut+fmv10rzjSJIkSRUjInZRHB/2Y1JKV41zHI2BB3YepH8gsXT+dC6f3ZR3HEmSJFWAchsuu0uPb45aElWd1cvnUVsT7Nh/kt0dp1k8Z1rekSRJkqRK8d4hX08DbgJ+FfhILmk06gbHibm6RZIkSYPKariklD422kFUfVqbpvCWq2bzyLMdrN+2n/fdenXekSRJkqSKkFJ68KxT90TEPwGfA/4uh0gaRb19Azy48xAAq2y4SJIkqaTcPVwkANatXADA+q37c04iSZIkVbxdwOV5h1B2T+w+wsnuPuZMn8INl7XmHUeSJEkVoqyGS0T8cUQsHt0oqkZrr5tPBGx56Rj7jnflHUeSJEmqCBHxhYj4/JDH3wM/AHbmnU3ZbWovjhO7/drimGVJkiQJyl/hcjdww2gGUXWa19LI6y+fCcAGV7lIkiRJg3YDLwx5PAd8CvjpHDNpFKSUzjRcHCcmSZKkocrawwX4IPAnEfH9lNJLoxlI1WfdygV874WjrN+2n/fefGXecSRJkqTcue/lxPXMwVO8dKSLKXU1vH3JnLzjSJIkqYKUu8Ll54A+4OmI+JehS+VHMZuqxJ0rivu4PL7rCIdP9eScRpIkScpfRCyKiK9GxN2l4ycj4p6IWJB3NmXTtr24uuWtV89mWkO5n2GUJEnSRFRuw2U38E3gk8B2Xr1UXpPMZbOaWLmohYH0ypsPSZIkaZL7HFAAtpSOfw44BHw2t0QaFZtL48RWO05MkiRJZynr4ziDy+NLn87qAGYBh1JKaRSzqYrctXIhW/eeYP22/fzcGy/PO44kSZKUt7cDy1NKLwOklHZGxB8AW/ONpSw6TvXwg5eOAbBq+byc00iSJKnSlLXCJSJeHxHPAHuAS4CPAM9HxPWjGU7VY3Cs2Lef7eB4VyHnNJIkSVLudgF3nHXuDuDFHLJolNy34yApwcpFLSycMTXvOJIkSaow5Y4U+yzwl8DJ0vFvAp+nuGxek9A186ZzzbzpFPoT9+84mHccSZIkKW8fAP46Ir4VEZ+JiHuAvyqdV5UaHCe2apnjxCRJkvTjym24LAG+OniQUuoHvgBcNxqhVJ3uWllc5XLv1n05J5EkSZLylVLaDKwEHgECeBhYmVLalGswla270M9DOzsAWHOdDRdJkiT9uHIbLk8AtwEJSBHRCHwQ+N4o5VIVGhwr9uDOQ3T29uWcRpIkScpXSml3SukTKaX3A3+XUtqddyaV7zvPH6ar0M+ClkZWXNKSdxxJkiRVoHIbLu+j2GCZATwAHAJWl85rklpxSQuXzZpKd2GAh3YeyjuOJEmSlJuIuC4inoyId5VObY6IbRGxNNdgKtum7aVxYsvnERE5p5EkSVIlKqvhklJ6DngN8HbgQ8CdFJfHPzOK2VRlIoJ1KwbHiu3POY0kSZKUq78BHgQ2lo7fDHyD4n6YqjIpJTa3F/eqXL3ccWKSJEk6t3JXuJBS6k8pPZpS+tfSn86QEutK+7jc136Qnr7+nNNIkiRJubkB+NOU0nGAlNJp4C+B1+eaSmXZ9vIJ9p/oZmp9LW+5enbecSRJklShym64SOfyustmMq+5gZM9fTz63OG840iSJEl5eQp4z1nnfh7YnkMWZbSpvThO7O1L5tBYX5tzGkmSJFUqGy4aVTU1wZ2lsWLrn3KsmCRJkiat/wp8oLRvy7ciYjvwAeD9OedSGQYbLo4TkyRJ0vnYcNGoGxwr1tZ+gL7+gZzTSJIkSeMvpfQDYCnwRxT3cvk4cA2wJ89cunj7j3ezde8JIuD2ZfPyjiNJkqQKVpd3AE08b7pyFq1N9Rw53csTu48641iSJEmTTkQsA/4MuBYYnEH1CeASoCGvXLp4m3cUV7fccFkrc5v9q5MkSdLwXOGiUVdXW8Oa0lL79Vv35ZxGkiRJysUXgaeBB4AtFEeMdQMfzC+SyrFpu+PEJEmSNDI2XDQmBseKbdh2gIGBlHMaSZIkadxdD3wS+CxwRUrpXuA/Ae/NM5QuTmdvH99+7jBgw0WSJEkXZsNFY+Lma+YwvaGO/Se6+eGeY3nHkSRJksbb0xQbLE8BV0TEfOAgcGWuqXRRHn6mg96+AS6bNZWl86fnHUeSJEkVzoaLxkRjfe2ZDSXXb92fcxpJkiRp3P0G8OvAHOBzwHbgUeBbeYbSxdncXhwntmrZfCIi5zSSJEmqdDZcNGbuKo0VW79tPyk5VkySJEmTR0rp28AiYF9K6feBdwK/BLwn12AasYGBxH07DgKOE5MkSdLI1OUdQBPXrUvn0lBXwwuHO2nfd5LrLmnJO5IkSZI0btKQTx2llB7KM4su3pY9x+g41UtzQx1vvHJW3nEkSZJUBVzhojEzraGOW5bOBYqrXCRJkiSpWmzaXhwndsu1c5lS51tnSZIkXZi/NWpMDY4V2+A+LpIkSZKqyOb24jixNY4TkyRJ0gjZcNGYWrVsPnU1wdMHTvL8oVN5x5EkSZKkC3rpSCdPHzhJbU1w27Vz844jSZKkKmHDRWNqRlM9b7l6NuBYMUmSJEnVYVN7cZzYG66YSWvTlJzTSJIkqVrYcNGYu2vlQsCxYpIkSZKqw+A4sdWOE5MkSdJFsOGiMbfmuvlEwA/3HGfvsa6840iSJEnSsE50F/ju84cBWH2dDRdJkiSNnA0Xjbm5zQ3cdMUswFUukiRJ0khFxI0RsSUiuiJiY0TMu8Dr3xsR6azHA2e95o6IeHRMg1e5h3Yeom8gcdXcaVw5Z1recSRJklRFbLhoXKxbuQBwHxdJkiRpJCKiBvgK8E1gCdAFfPoCl30ZmDnk8Tlg35Dv2QNsBprGIPKEsWl7cf+WNY4TkyRJ0kWy4aJxcWep4fLE7iMcOtmTcxpJkiSp4t0KzAI+mlLaA3wMeGdEDLvkIqXUm1I6NvgA7gDWD3nJtcDvjmXoatfXP8D9Tx8CYJUNF0mSJF2kurwDaHJY1DqV1146gx/uOU7b9gP832+6PO9IkiRJUiW7GXg8pdRXOt4C1AI3Ag9f6OKIWAJczZCGS0ppd0R0jODaBqBhyKlmgEKhQKFQGPEPMJoG7zvW939s1xGOdxVonVrP9Qun5fbzjrbxqt9EZf2ysX7ZWL9srF821i8b65dN3vUr9742XDRu7ly5gB/uOc69W/fZcJEkSZLObwFwpjmSUhqIiKPASJdd/ATwZErpQBn3/hDwkbNPbty4kaam/7+9Ow+P4z4PPP99cfC+D4CUKIm6SIKUo8OSdcuiCFKk4medeOzseL1O4own4/EkWY8TZ+LEI0tOdh1nvXaSjbNxMj7jJE5m7dgeWxdJHZYUWVKsyxJBUpRIUxRJgDdIggcI/OaPalAtmiAbKADVAL6f5+kH6Kqu6hcvq4F++Xa9Vew0stWrVw/q/r+zpQao4dKJx3jg/vvO+vjhZrDzN9KZv3zMXz7mLx/zl4/5y8f85VNU/jo6Ovq1nQ0XDZmVS+bwJ/dt4IlX9nCgo5OpE+qLDkmSJEmqZnGa+6nCbe8A7unn834a+FzZ/cnAthUrVjBlypR+7jKfzs5OVq9ezfLly6mvH7w64vN/+hjQwfuXXcGq0ljkkWCo8jdSmb98zF8+5i8f85eP+cvH/OVTdP7a29v7tZ0NFw2Zi2ZPYmHjZDa0HmTt+lbeddW8okOSJEmSqtUOoKnnTkTUAtOAnWfbsHSdl1s4zVkqlUgpHQNOXngxIuv71NfXF/6fBYMZwyu7DrFlTwf1tcHSpjmF/6yDoRr+DYcz85eP+cvH/OVj/vIxf/mYv3yKyl9/n7NmgOOQzuj20qfE7n3xrHWiJEmSNJo9ClwTET0fkrsSOAE8W8G2zcAh4MlBim1EWtuSTV+77qKZTB7nf4pIkiSp72y4aEitXJI1XH64cReHj504y6MlSZKkUesxYBdwd0TMA+4Evp1S6oiIaaUzXnpzB/BASql7KAIdKdasawOguanSy+RIkiRJb1ZIwyUiroqI5yLiSEQ8EBENFWzzoYh4LSL2RcQfnLLu/aV1ByPi/z1L8aECNc2dzAUzJ3DsRDePbNxVdDiSJElSVSo1S94DvAPYBIwDPlpavQ94yxk2X0X/r98yKu07fJx//eleAJY1nbU8lSRJkk5ryBsuEVEDfAv4PnApcAT4/Fm2aQL+AvgPwArgNyJiVWndAuCvgd8AriH7NNevDVb8yiciTp7l4lgxSZIkqXcppWdSSpenlMallFaklHaVlkdK6bkzbHd+Sukbvaz7akrpisGKebh6aEMb3QkWzZnMvOkTig5HkiRJw1QRZ7i8HZgB3JVS2gbcDfxi6cKOvbkNeCmldE9K6Wng68B7S+veBzyYUvpuSmk98AXg/YMXvvLquY7Lgy2tHO3sKjgaSZIkSaPd2hbHiUmSJCm/urM/ZMDdCDyVUuq5gMdzQC1wFdmFIU9nPNmZMD12A8vK9vdQ2bongc9ERKSU0qk7ioixwNiyRZMBOjs76ezs7OOPkl/Pcxbx3EVZ0jiRxiljaW0/xg83tLJ04ex+72s05m8gmb98zF8+5i8f85eP+cvH/OVXdA79t5PecLxs3HHzYhsukiRJ6r8iGi5zyBomQDabOCL2AWd6Z/sc8KmIuBDYD7wbmHq6/QF7yH6umacs7/Fx4JOnLnzggQeYMKG4U8dXr15d2HMXYcGEGlrba/jS/T/myCv5r+U52vI30MxfPuYvH/OXj/nLx/zlY/7yKyqHHR0dhTyvVI2e3LyHQ8dOMHvyWH7u3Kln30CSJEnqRRENF4A4zf2fORulR0ppTUT8I/AysAv4AXB1L/vr+b63/X0a+FzZ/cnAthUrVjBlypQKQh9YnZ2drF69muXLl1NfXz/kz1+UGa/u5dGv/CsbDo1lxe1vp662f9PtRmv+Bor5y8f85WP+8jF/+Zi/fMxffkXnsL29fcifU6pWa9a1AnDbwgZqak4tVSVJkqTKFdFw2QE09dyJiFpgGnDGK6inlD4QER8hGy32e8C8sv2Vz6SaCXQCe3vZzzHgWNnzA1BfX1/ofxgU/fxD7fpLZjNj4hj2Hj7Os9sOcsMls3Ltb7Tlb6CZv3zMXz7mLx/zl4/5y8f85VdUDv13kzIpJdb0XL/FcWKSJEnKqX+nFeTzKHBNRPQ0e64ETgDP9rZBRNwQEV9OKR1IKR0H3gY8Xra/G8oefh3w+Omu36LqUVdbw/LSBSnvffGMvTZJkiRJGhTrdx7k9f1HGFtXw005PwQmSZIkFdFweYxsLNjdETEPuBP4dkqpIyKmlc54OdVrwPsiYmVErABuBb5RWvf3wK0R8c6IWAR8uGydqtjKt8wB4P6XdtLdbX9MkiRJ0tBa25KNE7vpklmMH3O6UlSSJEmq3JA3XFJK3cB7gHcAm4BxwEdLq/cBbznNNq8BHwK+BnwZ+GBKaXNp3Sbg3wNfAJ4mu77LVwb3p9BAuOHimUweW0fbwWM8+9q+osORJEmSNMr0jBNb1uQ4MUmSJOVXxDVcSCk9A1x+muW9XqEwpfQVemmkpJS+gWe1DG2V+c0AACAASURBVDtj62q5ramB7z63nfte3MlbL5hRdEiSJEmSRom2g0d57rX9ACxraig4GkmSJI0ERYwUk05adVk2Vuy+l3biZXckSZIkDZWH1mdnt/zcvKk0ThlXcDSSJEkaCWy4qFC3LJjNuPoaXtt7hJe2txcdjiRJkqRRYvW6rOHS7DgxSZIkDRAbLirUhDF1vH3BbADuf2lnwdFIkiRJGg2Odnbx2KZdgOPEJEmSNHBsuKhwqy6bC8B9L9pwkSRJkjT4Ht+0m6Od3ZwzdRyL504pOhxJkiSNEDZcVLilixqorw1ebjvEprZDRYcjSZIkaYRb05KNE1vW1EhEFByNJEmSRgobLirc1PH13HDxLMCxYpIkSZIGV3d3Ym1LK+A4MUmSJA0sGy6qCqsumwM4VkySJEnS4Hpx+wHaDh5j4pharr94ZtHhSJIkaQSx4aKqsHxxIzUBP3n9AK/t7Sg6HEmSJEkjVM84sZsvnc3YutqCo5EkSdJIYsNFVWHmpLG87cIZgGPFJEmSJA2eNeuycWLNixsLjkSSJEkjjQ0XVY2VSxwrJkmSJGnwbN9/hHU72omApQtnFx2OJEmSRhgbLqoat5eu4/Ljrftoaz9acDSSJEmSRpq1LdnZLW89fzozJ40tOBpJkiSNNDZcVDXmTh3PFedNIyV4oHSavyRJkiQNlJ7rtyxrcpyYJEmSBp4NF1WVlZc5VkySJEnSwDt07ARPvLIHgOWLGwqORpIkSSORDRdVlZ7ruDzx6h72dxwvOBpJkiRJI8VjL+/ieFc3F8ycwMWzJxUdjiRJkkYgGy6qKvNnTWTRnMl0daeTp/tLkiRJUl6r15XGiS1qJCIKjkaSJEkjkQ0XVZ03xortKDgSSZIkSSNBV3fioQ1Zw6XZcWKSJEkaJDZcVHV6Gi4/fHk3h46dKDgaSZIkScPds1v3sffwcSaPq+Oa+TOKDkeSJEkjlA0XVZ2FjZO5cNZEjp/o5uENjhWTJEmSlE/PuOKlCxuor7UMliRJ0uDwnaaqTkRw+5LsLJd7X9xZcDSSJEmShru1La0ALGtynJgkSZIGjw0XVaVVpbFiD61v42hnV8HRSJIkSRqufrrnMC+3HaKuJrh1gQ0XSZIkDR4bLqpKPzdvKnOnjqPjeBePvby76HAkSZIkDVM948SumT+DqRPqC45GkiRJI5kNF1Ulx4pJkiRJGghr1mXjxJoXNxYciSRJkkY6Gy6qWj1jxda0tNLZ1V1wNJIkSZKGmwMdnTy1ZS8AzV6/RZIkSYPMhouq1tXzZzBz4hgOHOnkR6/uKTocSZIkScPMwxvb6OpOXNIwiQtmTiw6HEmSJI1wNlxUtWprghVLstP+73OsmCRJkqQ+Wlu6fktzk+PEJEmSNPhsuKiqrbxsLgD3v9RKV3cqOBpJkiRJw0VnVzcPbehpuDhOTJIkSYPPhouq2vUXzWTyuDp2HzrGM1v3FR2OJEmSpGHi6S17OXj0BDMmjuHK86cXHY4kSZJGARsuqmpj6mpOnv7vWDFJkiRJleoZJ7Z0YQO1NVFwNJIkSRoNbLio6q28bA6QNVxScqyYJEmSpDNLKbGmpRWA5YsdJyZJkqShYcNFVe+WS2czvr6W1/cf4cXX24sOR5IkSVKVe2XXIX66p4MxtTXcfOnsosORJEnSKGHDRVVv/Jhabl2YFUn3vbSj4GgkSZIkVbvV67JxYtdfPJOJY+sKjkaSJEmjhQ0XDQvlY8UkSZIk6UzWlsaJNTc5TkySJElDx4aLhoXbFjUwpraGV3Yd5uXWg0WHI0mSJKlK7Tl0jB9v3QfAsqbGgqORJEnSaGLDRcPC5HH13HTpLMCzXCRJkiT17qENu0gJFs+dwjnTxhcdjiRJkkYRGy4aNlYuycaK3WvDRZIkSVIv1qxznJgkSZKKYcNFw0bz4kZqa4J1O9rZuqej6HAkSZIkVZmjnV388OVdQFY/SJIkSUPJhouGjRkTx3DthTMAuP8lz3KRJEmS9GY/enUPHce7aJg8lsvOmVp0OJIkSRplbLhoWFl5Wc9YsR0FRyJJkiSp2qxtaQNgWVMjNTVRcDSSJEkabWy4aFhZsThruDyzdT+t7UcLjkaSJElStUgpsbbF67dIkiSpODZcNKzMmTqOq86fBsADjhWTJEmSVLJuRzvbDxxlXH0NN14yq+hwJEmSNArZcNGw88ZYMRsukiRJGrki4qqIeC4ijkTEAxFxxtM2IuJXIyKdcnu4bP3HIqItIvZGxCcG/QcYYj3jxG66ZDbj6msLjkaSJEmjkQ0XDTsrl8wF4MnNe9l7+HjB0UiSJEkDLyJqgG8B3wcuBY4Anz/LZn8PTC+7/TWwo7S/pcAngHcBtwMfjYjlgxJ8QdaUxoktX+w4MUmSJBXDhouGnfNnTmDx3Cl0dSce3LCr6HAkSZKkwfB2YAZwV0ppG3A38IsRMbG3DVJKx1NK+3tuwG3AfaXVvwp8I6X0WErpaeAbwPsH9ScYQq3tR3lh2wEAli6y4SJJkqRi1BUdgNQfKy+bw7od7dz/Uiu/OLPoaCRJkqQBdyPwVErpROn+c0AtcBXw6Nk2johLgYt5o+FyI/DJsoc8CXyql23HAmPLFk0G6OzspLOzsw8/wsDped7env+BF3cAcPm8qUwfV1tYnNXqbPnTmZm/fMxfPuYvH/OXj/nLx/zlU3T++vu8hTRcIuIq4MvAQrJi4X9PKbWdZZt3A38MzAT+CfjNlNLxiJgPbD7l4Y+klG4d4LBVRVZdNofPrd7I46/sYdXUoqORJEmSBtwcYHfPnZRSd0TsAxor3P7ngWdSSq2n2x+w5wz7+jhvbs4A8MADDzBhwoQKn35wrF69+rTLv7m+BqhhXuzlnnvuGdqghpHe8qfKmL98zF8+5i8f85eP+cvH/OVTVP46Ojr6td2QN1zKZhH/HfAO4Atks4jfd4ZtLgK+BvwbYCPwTeB3gT8qPaQTKD9v/AQa0S5pmMRFsyfy6q7DrNsfvKvogCRJkqSBF6e5nyrc9g7g1M5DnPJ9b/v6NPC5svuTgW0rVqxgypQpFT79wOrs7GT16tUsX76c+vr6N607cryL3336IaCbD/0vN7FozuRCYqxmZ8qfzs785WP+8jF/+Zi/fMxfPuYvn6Lz197e3q/tijjDpXwW8YmIuBt4LCImppQO97LNW4HXUkr3AUTEPwM3la3fVZpRrFEiIli5ZA5/+fArPL/n1DpUkiRJGvZ2AE09dyKiFpgG7DzbhqXrvNzCm89S2QHMLrs/s7d9pZSOAcfK9gdAfX194f9ZcLoYHn55L8dOdHPutPFcNm/6yXj1s6rh33A4M3/5mL98zF8+5i8f85eP+cunqPz19zmLaLj0ZxbxS8C5EbEI2ALcCvxr2fquiFgLXA+sBn45pXTgdDuqtnnERc+iG86WL5rNXz78Ci/tD/50zUaWL57D4rmTLbD6wOMvH/OXj/nLx/zlY/7yMX/5FZ1D/+2GhUeB/xIRdaXa6UqyM/mfrWDbZuAQ2XVayvd3A/C3pfvXAY8NXLjFWduSTU1rbmqwFpAkSVKhimi49HkWcUppXUR8EmghGx/2HHB32UMagY8Avw58D/g9srnDp1OV84id5dd3KUHj+FpajwRfeGQLX3hkC9PGJJZMz24Lpibqa4qOcnjw+MvH/OVj/vIxf/mYv3zMX37DbR6xhtRjwC7g7oj4/4A7gW+nlDoiYhpwMKXU1cu2dwAPpJS6y5Z9HfheRPwd2dkr7wPePXjhD43u7sSaluxyoM2LK728jSRJkjQ4imi4QB9nEUfEz5E1UX6R7AyXPwU+QVZ0bAMuSCntLD32a3DGS3pU1TziomfRDXfX3tzBn3/7EXbVN/L4K3vZf7ybx1uDx1thwphabrx4JksXzmbpwlnMmjT27DscZTz+8jF/+Zi/fMxfPuYvH/OXX9E57O88Yg2d0gfT3gN8Bfht4IfAvyut3kd2xstzvWy+Cvj9U/b3cER8CvgOUAN8NqW0djBiH0ovvH6A3YeOMWlsHddeOLPocCRJkjTKFdFw6c8s4g8A96aUvlPa5m7gW8CdpdPry7fdD/TaOanWecRFP/9wNWvKBK5rSNxxx1V0UcMTr+5hzbpW1ra0sbP9KKtb2ljd0kYEXHHeNJqbGmluamRB4yTHDZTx+MvH/OVj/vIxf/mYv3zMX37DbR6xhlZK6Rng8tMsP+Mb2ZTS+b0s/yzw2YGJrjqsWZeNE3v7gtmMqfP0dkmSJBWriIZLf2YRd5Fd56VHXWkbIuIzwIyU0r8vrTuf7CwYjTLj6mtZurCBpQsb+KNfSLy0vZ01LVnz5SevH+DZrft5dut+/u/7NzBv+viTzZe3XTjD4kySJEkahtaUrt+yrKmh4EgkSZKkYhou/ZlFvBr4VkQsB14huw5Lz8Drh4G/j4ivAkfIzob5z4P+U6iqRQSXnTuVy86dykeaF7DzwFHWrs+aL49t2s22fUf46r9s4av/soXJY+u4ZeFsmpsauHVBA9Mnjik6fEmSJElnsW1fB+t3HqQmYOlCGy6SJEkq3pA3XPozizildH9E3AV8CZhK1mz5SGndvRHxJ2QjxrqAv0gp/dMQ/CgaRuZMHcf7rr2A9117AR3HT/DYy7tZ29LG2vWt7D50nB+8sIMfvLCDmoCr58+guamBZU2NXDx7UtGhS5IkSTqNtS1tAFx9wQw/NCVJkqSqUMQZLv2aRXymecMppU8Dnx6wADWiTRhTx4olc1ixZA7d3Ynnt+1nbUsba1paWb/zIE9t3stTm/fyf92zngtnTTzZfLn6gunU1Tp6TJIkSaoGjhOTJElStSmk4SJVi5qa4Mrzp3Pl+dP5ndsX8treDh5cnzVffvTqHjbvPszfPLqZv3l0M1PH17N04WyWNTXy9oWzmTLOi81KkiRJRTh4tJMfvboHgObFjQVHI0mSJGVsuEhlzpsxgV+5YT6/csN8Dh7t5NGXd7NmXSsPbWhjX0cn33luO995bjt1NcG1F81g2aJGmpsaOX/mhKJDlyRJkkaNH27cTWdX4sJZEx0DLEmSpKphw0XqxeRx9dzxlrnc8Za5nOjq5pmt+1nb0sqallZe2XWYxzft4fFNe/jU99exoHESzU2NLGtq5IrzplFb0+t0PEmSJEk5rS2NE2t2nJgkSZKqiA0XqQJ1tTW87cIZvO3CGXz8jiY27z58svny9JZ9bGw9xMbWQ/zlw68wc+IYbluUXffl5ktnMXGsLzNJkiRpoJzo6uahDW0ALGtynJgkSZKqh/8TLPXDhbMm8sGbL+KDN1/E/o7jPLJxF6vXtfLIxl3sOXyc//7jbfz3H29jTF0NN1w8k2VNjTQ3NTB36viiQ5ckSZKGtWe27mdfRydTx9dz9QXTiw5HkiRJOsmGi5TTtAljeOcV5/LOK86ls6ubpzfvZXVLK2tb2ti6t4OHN+zi4Q27+K/fgSXnTDnZfLnsnKnUOHpMkiRJ6pOecWJLF86mrram4GgkSZKkN9hwkQZQfW0NN1wyixsumcWd71jMprZDJ5svz2zdx0vb23lpezt/vvZlGqeM5bZFjSxf3MANF89iXH1t0eFLkiRJVW91z/VbFjtOTJIkSdXFhos0SCKCSxsnc2njZD586yXsPnSMh9a3sbaljR++vIvW9mP8w1Nb+YentjKuvoabLplNc1MDtzU10DB5XNHhS5IkSVVn8+7DvLrrMHU1wS0LZhcdjiRJkvQmNlykITJr0ljec/V5vOfq8zja2cWPXt3D2pY21rS0suPAUda0tLKm9Gm9y8+bRvOiBpoXN7JozmQiHD0mSZIkPbhhFwDXXTSTKePqC45GkiRJejMbLlIBxtXXcuvCBm5d2MCn3rmEdTvaTzZfXth2gOdf28/zr+3n/1m9kXOnjae5qYFlTY1ce9EMxtY5ekySJEmj04Prs4bLsqaGgiORJEmSfpYNF6lgEcGSc6ay5Jyp/NayS2ltP8qD69tYs66Vxzbt5vX9R/jaEz/la0/8lIljann7wtksW9TI0kUNzJg4pujwJUmSpCFxuBN+vHU/AM1NXr9FkiRJ1ceGi1RlGqeM471vO5/3vu18jhzv4vFNu1nT0sra9W3sOniMe36yk3t+spOagLdeMJ1lTY00NzVw8exJjh6TJEnSiNWyP+jqTixsnMx5MyYUHY4kSZL0M2y4SFVs/Jhamhc30ry4ke7uxAuvH2BtSytrWtpo2dHO01v28fSWffzxveuZP3MCy5oaWdbUwDXzZ1BfW1N0+JIkSdKAeXFf9uEix4lJkiSpWtlwkYaJmprgivOmccV50/jtFQvZtq8jGz3W0sYTr+xmy54OvvTYZr702GamjKvj1oUNNC9u5O0LZjN1vBcUlSRJ0vB1/EQ3LfuzhkvzYseJSZIkqTrZcJGGqXnTJ/DL18/nl6+fz6FjJ3h04y5Wt7Ty0Po29nV08r3nt/O957dTVxNcM39GdqZMUwMXzJxYdOiSJElSn/zrT/dxtCuYOXEMV8ybVnQ4kiRJ0mnZcJFGgElj61j1lrmsestcuroTz27dx+qWVta2tLGp7RBPvLqHJ17dwx9+fx2XNEyiuXTdl8vmTio6dEmSJOms1q7fBcDShbOpqfG6hZIkSapONlykEaa2Jrh6/gyunj+Dj69qYsvuw6wpNV+e2rKXTW2H2NR2iL965BWmT6hn3tgaHjj0AmPqaqmrCepqa6ivDepqsq+1PcvK1vW6rLRNz7raXvZXX1tD3emWlbaJsIiWJElSJqXEgxuyhsttC2cXHI0kSZLUOxsu0gg3f9ZEPnjzRXzw5os40NHJwxvbWNvSxkMbstFj+zpq+Mm+nUWH+SYnmzA1pcZMTwOntmxZWXMna9iULaupKT32zQ2fk48raxb9zLZn3F/23D3LUncX2w/DxtaD1NV5nZy+OnGik+0d5q+/zF8+5i8f85ffiROdHDhedBTS8LCx9RDb9h2hLhI3XjKj6HAkSZKkXtlwkUaRqRPqeecV5/LOK86ls6ubH23axXcffpKFTYtJBJ1diRNdiRPd3ZzoTpzo6s6WdXeXlpeWlb52daeT67Nt37zsRFeis7ubrq50cpuTy0qPO53OrmzdUbqHOEP9UcdnXnii6CCGsTo+87z56z/zl4/5y8f85XVjYw3vLToIaRhY09IKwIKpiQljLGElSZJUvXy3Ko1S9bU1XHfRDPauT9xx/QXU1w/9J5RTSnR1Z42cztM1a87U1DmlIXTycadrCJWWdZ3c7xv7O7msbH9dpYZTZ9cb67rKYsoaT9njDx89ytgxY3EKWt+lBMeOHzN//WT+8jF/+Zi//FKCsbVHiw5DGhY6u7qZPK6OJdOPFR2KJEmSdEY2XCQVJiJKI8NgXH1t0eH0WWdnJ/fccw933HFrIQ2r4c785WP+8jF/+Zi//HpyKOnsPtK8gF+/6QJ+cM99RYciSZIknVFN0QFIkiRJknQm9bU1jBl+n8+RJEnSKGPDRZIkSZIkSZIkKScbLpIkSZIkSZIkSTnZcJEkSZIkSZIkScrJhoskSZIkSZIkSVJONlwkSZIkSZIkSZJysuEiSZIkSZIkSZKUkw0XSZIkSZIkSZKknGy4SJIkSZIkSZIk5WTDRZIkSZIkSZIkKScbLpIkSZIkSZIkSTnVFR1AtWhvby/keTs7O+no6KC9vZ36+vpCYhjOzF8+5i8f85eP+cvH/OVj/vIxf/kVncOi3vtqeCvyuCn6NTPcmb98zF8+5i8f85eP+cvH/OVj/vIpOn/9fe8bKaUBDmV4iYhzgW1FxyFJkiQVYF5K6fWig1B1s2aSJEnSKNanmsmGS0QA5wAHCwphMlnxMq/AGIYz85eP+cvH/OVj/vIxf/mYv3zMX37VkMPJwPY02gsCnVUV1ExQHa+Z4cz85WP+8jF/+Zi/fMxfPuYvH/OXTzXkr88106gfKVZKVmGf6stqFwAOppSc7dBH5i8f85eP+cvH/OVj/vIxf/mYv/yqJIf+26kiRddMUDWvmWHL/OVj/vIxf/mYv3zMXz7mLx/zl0+V5K/Pz1szGFFIkiRJkiRJkiSNJjZcJEmSJEmSJEmScrLhUrxjwN2lr+o785eP+cvH/OVj/vIxf/mYv3zMX37mUOobXzP5mL98zF8+5i8f85eP+cvH/OVj/vIZlvkLr5EpSZIkSZIkSZKUj2e4SJIkSZIkSZIk5WTDRZIkSZIkSZIkKScbLpIkSZIkSZIkSTnZcClARMyNiEci4oqyZbdHxMaIOBwR34yICUXGWK0i4qJS7g5GxMMRcUFpufmrQEQ0RcQTEXEoIh6NiEtLy6+KiOci4khEPBARDUXHWs0i4paISBFxa+m+x18FImJLKW8nb6XlHn8ViIj6iPhi6fdfS0RcV1ru8XcWETH/1GOv7PgzfxWIiLeU/n4cjIj7I+L80nJfvxWIiBsi4icR0VE6zsaXlps/qRfWTP1nzZSPNdPAsGbqH2um/Kyb+s+6KT/rpnxGSt1kw2WIRcQXge3ALWXLpgH/BHwOWALMB/6giPiGgb8GtgKXAXuAL5i/PvkH4HvAAmA98FcRUQN8C/g+cClwBPh8YRFWuYioB/6y7L7HX9/cDkzvuXn89cnvABcCVwLfBP7W469iWyk77oBfBnaavz75Z7LX6UJgC/BlX7+ViYg6stfsP5O9f5kL3GX+pN5ZM+VmzZSPNVNO1ky5WTPlY93Uf9ZN+Vk39dOIqptSSt6G8AbMIvvFlIArSss+ALxU9ph3AT8tOtZquwFjgG5gcen+HcAB81dx/qYDjwJjyvK3A1haymNdaflVQAcwseiYq/EG/C7wILAfuNXjr0+52wJcesoyj7/K87ep7O/GJODdwL/z+OtXLv8G+Iqv34rzNbv0vmVO6f71wGFfvxXnb0kpf9NL91eRFbPmz5u3Xm7WTLlyZ82UL3/WTAOTR2um/ufOmil/Dq2bBi6X1k19y5d1U778jZi6yTNchlhKaXdKacspi28E/qXs/pPA+RFx3pAFNjzUk71x21y6P5Osq2n+KpBS2pdSujmldDwixgC/BDxLlr+nUkonSg99Dqgl+wWmMhExD/g94D+VLfb465u7SqeGPhcRS/D4q0hEzCH7lNYtEXEAeAR4nuwNnMdf360C7sHXb6X2AdvIPm1J6etz+Pqt1PjS1yOlr7uB8zB/Uq+smXKxZsrBmik/a6YBYc3UT9ZNA866qW+sm/IZMXWTDZfqMIfsIOqxp/S1sYBYqlZK6XBK6bMppSOlU5T/D+BvMX/90UH2h/M3OCV/KaVusj8S5u9n/RnwxZRSS9kyj7++2Ux2CuiLwH/D469Sc8k+6XEtcDnQAvwVHn99Ftm1ABqB1Zi/ipTe2P4S8MWIOAb8Jtl4AV+/lXmZ7O/uL5ROk/9AafnFmD+pL/ydXQFrpgFlzdQ/1kz5WTP1n3XTALFu6jvrptxGTN1kw6V6xGm+T0UEUu1KL7p/ALqAO3sWlz+k9NX89e5twDPAn5fuxynrA/P3JhGxEngr8IenW32a783fz7oxpfSJlNLrZMfedWSfYPD4O7uJZJ/guLv0id+/IDuttgaPv766A3gipbS/dN/8nUXpQoVfBz5J9imibwBf7ll96sMxf2+SUjoAfAT4GtlolZ5PbB3G/El95e/sClkzDQhrpj6yZhoQ1kz5WDcNHOumPrJuymck1U02XKrDDrI5fz1mlr7uLCCWqla6UNI/ks10XplSOoL5q0hEzI6IKwFSSs8Avw/8PLCLsvxFRC0wDfN3qv+V7NMy2yNiPzCVNy6E5vFXgVLR0KPnTdtWPP4qcaD0dW/p6x6yNxiv4/HXV3cA95a+9+9HZVaQzbL/TErpJeBjwA3496NiKaW/Ifu7MRf4LnCMU44/8yedlb+zK2TN1H/WTLlZM+VkzZSbddPAsW7qO+umnEZK3WTDpTo8SvYC7HEdsOWUP7TK/CHZqWTLUkr7SsvMX2WuBH5Qdr+nE/wwcE3pU3A9jztBNqtYb/gYWaFwRel2EPgg2THp8XcWEfHzEbGhbNH5ZKeKPoTHXyU2AZ3AgtL9RrIL4vr7rw8iYgZZju4pLTJ/leki+6RgjyB7D+nrtwIRMSki7gMmpZQOkn1i+nGy48/8SZXzd3blrJn6z5opH2umHKyZBoR10wCwbuo366YcRlLdZMOlOnwXmBsR/zEi5pO9SflGoRFVoYi4APgo8B+zuzEtIqZh/ir1FDAuIv5T6UKGHyX7pfUoWbf97tLyO4Fvp5Q6igu1+vRcvLXnRvambScef5V6GjgnIj4YERcCHyc7TfQxPP7OqvTJ1O8Bd0bERWTz2O/H46+vbgdaU0rPl+6bv8o8CUyJiP9cep3+n8BrpeW+fs8ipXQIuAD4rYhYRPY+5sv4+0/qK39nV8CaKTdrphysmXKzZsrJumnAWDf1j3VTDiOpbrLhUgVKM+p+iezN3DqyC6R9utCgqtOtwDjgX8gujtRzm475O6vS3M13Ab9OduG4RuD9pYtNvQd4B9mnQcaR5VIV8PVbmZRSG9mIgY+RzcJ+Hfhdj78++TDZp2VeJDu99sMef31Wflq8r98KpZR2kb1Ofw3YANwEvCuldAxfv5V6P1mungT+/5TS3/n7T+obf2dX7FasmfrNmmlw+PqtjDXTgLFuys+6qR+smwbEiKibIqWqvb6MJEmSJEmSJEnSsOAZLpIkSZIkSZIkSTnZcJEkSZIkSZIkScrJhoskSZIkSZIkSVJONlwkSZIkSZIkSZJysuEiSZIkSZIkSZKUkw0XSZIkSZIkSZKknGy4SJIkSZIkSZIk5WTDRZJUmIi4NSK2DOL+74qIrw7W/iVJkiRpsFk3SdLwYcNFkjQiRESKiPlFxyFJkiRJ1cq6SZIGlw0XSZIkSZIkSZKknGy4SNIoFxEPR8RXImJXRPx96fv2iHhHRLwzIjZExOGIWBsR55S2WVBaD7vDuAAAA4BJREFUtqh0/88i4n9U+HwfjIhtEbEdWHnKupUR8ZOIOBgR34uIhtLyuyLi3oh4JCIORMQ3I2JKad36iEilXWwufWLr356y3zsjYn9EbImIG/NlTJIkSdJoY90kSaqEDRdJEsCFwAeA9wI/Br4NvBP4R+CPgUuA3cAnAFJKG4E/Az5dOh39V4DfOtuTRMTlwF8AHwZWAO8pW3cx8FfAbwKXA/tLz91jJfAl4GpgPvCHpeXXANNL319e+v5bZdvdAVwEXAk8Bnz6bHFKkiRJ0mlYN0mSzsiGiyQJ4JvAi6Xv/xuwBZgIXAz8HVlhMR5YWLbNHwFXAf8EfD6ltLmC5/kFYHVK6XsppReBz5at+7fAOcB3gGeAdwE3la1/PKX09ZTSy8BnyAobUkoHU0r7S49pTyntTyl1lm13AvgPpfi+DpxXQZySJEmSdCrrJknSGdUVHYAkqSoc7fkmpXQ0IgAScDfwb4ANQDtQW/a4joj4W+D3Kb2Jr8Bc4LWy+6+WfT+P7BNWHy9b1lX2ffl2rwONFT7nj1JKx0rfHweiwu0kSZIkqZx1kyTpjDzDRZLUm/+N7JNS81NK15F9guqkiGgEPgSsBe6qcJ9tZJ/G6nF+2ffbgDkppS0ppS3AOLLT5HvML/v+PGDHKftOnL4oaK8wNkmSJEnqK+smSdJJNlwkSb3ZW/o6NSJWAf+VN78x/xzZJ6veC7w7Iq6vYJ//A7g9Iu6IiCXAx8rW/SNwQ0R8ICLOB/4EOLds/bUR8SsRcSnwX8jmJZfbBKyKiHMi4iYkSZIkafBZN0mSTrLhIknqzQ+BrUAL8Engi0BTRIyLiGZgFfAHKaXdZKfQ/3VE1J9phymlp4HfIZt3fA9wb9m6TWTzh38beAno5M2f1Po+8Gtkc4pfKT1nuQ8BHwV+SnZxSUmSJEkabNZNkqSTIqVUdAySJJ1RRNxFdor+rxYciiRJkiRVJesmSSpeXdEBSJJGjtIp7S/0svqJlNKqoYxHkiRJkqqNdZMkjVye4SJJGjARUQfM62X10ZTSzqGMR5IkSZKqjXWTJI1cNlwkSZIkSZIkSZJyqik6AEmSJEmSJEmSpOHOhoskSZIkSZIkSVJONlwkSZIkSZIkSZJysuEiSZIkSZIkSZKUkw0XSZIkSZIkSZKknGy4SJIkSZIkSZIk5WTDRZIkSZIkSZIkKaf/Cd0zdEaLIgwlAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 2000x400 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 优化结果过程可视化\n",
    "fig,axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 4), dpi=100)\n",
    "\n",
    "axes[0].plot(tuned_parameters, error_t)\n",
    "axes[1].plot(tuned_parameters, accuracy_t)\n",
    "\n",
    "axes[0].set_xlabel(\"max_depth\")\n",
    "axes[0].set_ylabel(\"error_t\")\n",
    "axes[1].set_xlabel(\"max_depth\")\n",
    "axes[1].set_ylabel(\"accuracy_t\")\n",
    "\n",
    "axes[0].grid(True)\n",
    "axes[1].grid(True)\n",
    "\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过图像展示,最后确定max_depth=30的时候,表现效果不错"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定最优的min_sample_leaf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.70324821 0.         0.         0.         0.        ]\n",
      "[0.70324821 0.73952764 0.         0.         0.        ]\n",
      "[0.70324821 0.73952764 0.77021434 0.         0.        ]\n",
      "[0.70324821 0.73952764 0.77021434 0.7949516  0.        ]\n",
      "[0.70324821 0.73952764 0.77021434 0.7949516  0.81709813]\n"
     ]
    }
   ],
   "source": [
    "# 确定n_estimators的取值范围\n",
    "tuned_parameters = range(1, 10, 2)\n",
    "\n",
    "# 创建添加accuracy的一个numpy\n",
    "accuracy_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 创建添加error的一个numpy\n",
    "error_t = np.zeros(len(tuned_parameters))\n",
    "\n",
    "# 调优过程实现\n",
    "for j, one_parameter in enumerate(tuned_parameters):\n",
    "    rf2 = RandomForestClassifier(n_estimators=175, \n",
    "                                 max_depth=30, \n",
    "                                 max_features=15, \n",
    "                                 min_samples_leaf=one_parameter, \n",
    "                                 oob_score=True, \n",
    "                                 random_state=0, \n",
    "                                 n_jobs=-1)\n",
    "    \n",
    "    rf2.fit(x_train, y_train)\n",
    "    \n",
    "    # 输出accuracy\n",
    "    accuracy_t[j] = rf2.oob_score_\n",
    "    \n",
    "    # 输出log_loss\n",
    "    y_pre = rf2.predict_proba(x_test)\n",
    "    error_t[j] = log_loss(y_test, y_pre, eps=1e-15, normalize=True)\n",
    "    \n",
    "    print(error_t)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x400 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 优化结果过程可视化\n",
    "fig,axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 4), dpi=100)\n",
    "\n",
    "axes[0].plot(tuned_parameters, error_t)\n",
    "axes[1].plot(tuned_parameters, accuracy_t)\n",
    "\n",
    "axes[0].set_xlabel(\"min_sample_leaf\")\n",
    "axes[0].set_ylabel(\"error_t\")\n",
    "axes[1].set_xlabel(\"min_sample_leaf\")\n",
    "axes[1].set_ylabel(\"accuracy_t\")\n",
    "\n",
    "axes[0].grid(True)\n",
    "axes[1].grid(True)\n",
    "\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过图像展示,最后确定min_sample_leaf=1的时候,表现效果不错"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 确定最优模型\n",
    "\n",
    "n_estimators=175,\n",
    "\n",
    "max_depth=30,\n",
    "\n",
    "max_features=15,\n",
    "\n",
    "min_samples_leaf=1, \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n",
       "                       criterion='gini', max_depth=30, max_features=15,\n",
       "                       max_leaf_nodes=None, max_samples=None,\n",
       "                       min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "                       min_samples_leaf=1, min_samples_split=2,\n",
       "                       min_weight_fraction_leaf=0.0, n_estimators=175,\n",
       "                       n_jobs=-1, oob_score=True, random_state=40, verbose=0,\n",
       "                       warm_start=False)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf3 = RandomForestClassifier(n_estimators=175, max_depth=30, max_features=15, min_samples_leaf=1, \n",
    "                             oob_score=True, random_state=40, n_jobs=-1)\n",
    "\n",
    "rf3.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7788655341203571"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf3.score(x_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7693692396313364"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf3.oob_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7018021583384667"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pre_proba1 = rf3.predict_proba(x_test)\n",
    "\n",
    "log_loss(y_test, y_pre_proba1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成提交数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_data = pd.read_csv(\"./data/otto/test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>feat_1</th>\n",
       "      <th>feat_2</th>\n",
       "      <th>feat_3</th>\n",
       "      <th>feat_4</th>\n",
       "      <th>feat_5</th>\n",
       "      <th>feat_6</th>\n",
       "      <th>feat_7</th>\n",
       "      <th>feat_8</th>\n",
       "      <th>feat_9</th>\n",
       "      <th>...</th>\n",
       "      <th>feat_84</th>\n",
       "      <th>feat_85</th>\n",
       "      <th>feat_86</th>\n",
       "      <th>feat_87</th>\n",
       "      <th>feat_88</th>\n",
       "      <th>feat_89</th>\n",
       "      <th>feat_90</th>\n",
       "      <th>feat_91</th>\n",
       "      <th>feat_92</th>\n",
       "      <th>feat_93</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>20</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 94 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id  feat_1  feat_2  feat_3  feat_4  feat_5  feat_6  feat_7  feat_8  feat_9  \\\n",
       "0   1       0       0       0       0       0       0       0       0       0   \n",
       "1   2       2       2      14      16       0       0       0       0       0   \n",
       "2   3       0       1      12       1       0       0       0       0       0   \n",
       "3   4       0       0       0       1       0       0       0       0       0   \n",
       "4   5       1       0       0       1       0       0       1       2       0   \n",
       "\n",
       "   ...  feat_84  feat_85  feat_86  feat_87  feat_88  feat_89  feat_90  \\\n",
       "0  ...        0        0       11        1       20        0        0   \n",
       "1  ...        0        0        0        0        0        4        0   \n",
       "2  ...        0        0        0        0        2        0        0   \n",
       "3  ...        0        3        1        0        0        0        0   \n",
       "4  ...        0        0        0        0        0        0        0   \n",
       "\n",
       "   feat_91  feat_92  feat_93  \n",
       "0        0        0        0  \n",
       "1        0        2        0  \n",
       "2        0        0        1  \n",
       "3        0        0        0  \n",
       "4        9        0        0  \n",
       "\n",
       "[5 rows x 94 columns]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feat_1</th>\n",
       "      <th>feat_2</th>\n",
       "      <th>feat_3</th>\n",
       "      <th>feat_4</th>\n",
       "      <th>feat_5</th>\n",
       "      <th>feat_6</th>\n",
       "      <th>feat_7</th>\n",
       "      <th>feat_8</th>\n",
       "      <th>feat_9</th>\n",
       "      <th>feat_10</th>\n",
       "      <th>...</th>\n",
       "      <th>feat_84</th>\n",
       "      <th>feat_85</th>\n",
       "      <th>feat_86</th>\n",
       "      <th>feat_87</th>\n",
       "      <th>feat_88</th>\n",
       "      <th>feat_89</th>\n",
       "      <th>feat_90</th>\n",
       "      <th>feat_91</th>\n",
       "      <th>feat_92</th>\n",
       "      <th>feat_93</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>20</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 93 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   feat_1  feat_2  feat_3  feat_4  feat_5  feat_6  feat_7  feat_8  feat_9  \\\n",
       "0       0       0       0       0       0       0       0       0       0   \n",
       "1       2       2      14      16       0       0       0       0       0   \n",
       "2       0       1      12       1       0       0       0       0       0   \n",
       "3       0       0       0       1       0       0       0       0       0   \n",
       "4       1       0       0       1       0       0       1       2       0   \n",
       "\n",
       "   feat_10  ...  feat_84  feat_85  feat_86  feat_87  feat_88  feat_89  \\\n",
       "0        3  ...        0        0       11        1       20        0   \n",
       "1        0  ...        0        0        0        0        0        4   \n",
       "2        0  ...        0        0        0        0        2        0   \n",
       "3        0  ...        0        3        1        0        0        0   \n",
       "4        3  ...        0        0        0        0        0        0   \n",
       "\n",
       "   feat_90  feat_91  feat_92  feat_93  \n",
       "0        0        0        0        0  \n",
       "1        0        0        2        0  \n",
       "2        0        0        0        1  \n",
       "3        0        0        0        0  \n",
       "4        0        9        0        0  \n",
       "\n",
       "[5 rows x 93 columns]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data_drop_id = test_data.drop([\"id\"], axis=1)\n",
    "test_data_drop_id.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pre_test = rf3.predict_proba(test_data_drop_id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.01714286, 0.05722222, 0.10857143, ..., 0.04571429, 0.00571429,\n",
       "        0.01714286],\n",
       "       [0.05714286, 0.03428571, 0.04571429, ..., 0.04571429, 0.23428571,\n",
       "        0.04571429],\n",
       "       [0.00571429, 0.        , 0.        , ..., 0.01142857, 0.01142857,\n",
       "        0.        ],\n",
       "       ...,\n",
       "       [0.02285714, 0.21714286, 0.43457143, ..., 0.05142857, 0.02285714,\n",
       "        0.        ],\n",
       "       [0.00571429, 0.2113872 , 0.0717242 , ..., 0.00571429, 0.00571429,\n",
       "        0.        ],\n",
       "       [0.01790619, 0.18628362, 0.28831817, ..., 0.15753182, 0.00576334,\n",
       "        0.00048338]])"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pre_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "result_data = pd.DataFrame(y_pre_test, columns=[\"Class_\"+str(i) for i in range(1, 10)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class_1</th>\n",
       "      <th>Class_2</th>\n",
       "      <th>Class_3</th>\n",
       "      <th>Class_4</th>\n",
       "      <th>Class_5</th>\n",
       "      <th>Class_6</th>\n",
       "      <th>Class_7</th>\n",
       "      <th>Class_8</th>\n",
       "      <th>Class_9</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.017143</td>\n",
       "      <td>0.057222</td>\n",
       "      <td>0.108571</td>\n",
       "      <td>0.748492</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.045714</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.017143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.057143</td>\n",
       "      <td>0.034286</td>\n",
       "      <td>0.045714</td>\n",
       "      <td>0.057143</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.474286</td>\n",
       "      <td>0.045714</td>\n",
       "      <td>0.234286</td>\n",
       "      <td>0.045714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.971429</td>\n",
       "      <td>0.011429</td>\n",
       "      <td>0.011429</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.241714</td>\n",
       "      <td>0.317143</td>\n",
       "      <td>0.264000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.022857</td>\n",
       "      <td>0.011429</td>\n",
       "      <td>0.131429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.207592</td>\n",
       "      <td>0.000447</td>\n",
       "      <td>0.000238</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.003752</td>\n",
       "      <td>0.023424</td>\n",
       "      <td>0.024002</td>\n",
       "      <td>0.195145</td>\n",
       "      <td>0.545400</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Class_1   Class_2   Class_3   Class_4   Class_5   Class_6   Class_7  \\\n",
       "0  0.017143  0.057222  0.108571  0.748492  0.000000  0.000000  0.045714   \n",
       "1  0.057143  0.034286  0.045714  0.057143  0.005714  0.474286  0.045714   \n",
       "2  0.005714  0.000000  0.000000  0.000000  0.000000  0.971429  0.011429   \n",
       "3  0.005714  0.241714  0.317143  0.264000  0.000000  0.005714  0.022857   \n",
       "4  0.207592  0.000447  0.000238  0.000000  0.003752  0.023424  0.024002   \n",
       "\n",
       "    Class_8   Class_9  \n",
       "0  0.005714  0.017143  \n",
       "1  0.234286  0.045714  \n",
       "2  0.011429  0.000000  \n",
       "3  0.011429  0.131429  \n",
       "4  0.195145  0.545400  "
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "result_data.insert(loc=0, column=\"id\", value=test_data.id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>Class_1</th>\n",
       "      <th>Class_2</th>\n",
       "      <th>Class_3</th>\n",
       "      <th>Class_4</th>\n",
       "      <th>Class_5</th>\n",
       "      <th>Class_6</th>\n",
       "      <th>Class_7</th>\n",
       "      <th>Class_8</th>\n",
       "      <th>Class_9</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.017143</td>\n",
       "      <td>0.057222</td>\n",
       "      <td>0.108571</td>\n",
       "      <td>0.748492</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.045714</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.017143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0.057143</td>\n",
       "      <td>0.034286</td>\n",
       "      <td>0.045714</td>\n",
       "      <td>0.057143</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.474286</td>\n",
       "      <td>0.045714</td>\n",
       "      <td>0.234286</td>\n",
       "      <td>0.045714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.971429</td>\n",
       "      <td>0.011429</td>\n",
       "      <td>0.011429</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.241714</td>\n",
       "      <td>0.317143</td>\n",
       "      <td>0.264000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.005714</td>\n",
       "      <td>0.022857</td>\n",
       "      <td>0.011429</td>\n",
       "      <td>0.131429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.207592</td>\n",
       "      <td>0.000447</td>\n",
       "      <td>0.000238</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.003752</td>\n",
       "      <td>0.023424</td>\n",
       "      <td>0.024002</td>\n",
       "      <td>0.195145</td>\n",
       "      <td>0.545400</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   Class_1   Class_2   Class_3   Class_4   Class_5   Class_6   Class_7  \\\n",
       "0   1  0.017143  0.057222  0.108571  0.748492  0.000000  0.000000  0.045714   \n",
       "1   2  0.057143  0.034286  0.045714  0.057143  0.005714  0.474286  0.045714   \n",
       "2   3  0.005714  0.000000  0.000000  0.000000  0.000000  0.971429  0.011429   \n",
       "3   4  0.005714  0.241714  0.317143  0.264000  0.000000  0.005714  0.022857   \n",
       "4   5  0.207592  0.000447  0.000238  0.000000  0.003752  0.023424  0.024002   \n",
       "\n",
       "    Class_8   Class_9  \n",
       "0  0.005714  0.017143  \n",
       "1  0.234286  0.045714  \n",
       "2  0.011429  0.000000  \n",
       "3  0.011429  0.131429  \n",
       "4  0.195145  0.545400  "
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "result_data.to_csv(\"./data/otto/submission.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "165px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
